Packs
A pack is a self-contained plugin that teaches the kernel how to work in a specific domain. The kernel itself is domain-agnostic — it provides scope enforcement, policy evaluation, evidence recording, and tool dispatch. Packs provide the actual tools, policies, and evidence types for a particular workflow.
First-Party Packs
Section titled “First-Party Packs”LumenFlow currently ships three first-party packs:
| Pack | Domain | Current role |
|---|---|---|
software-delivery | Software development workflow | Work Units, lanes, gates, memory, CLI-driven delivery lifecycle |
sidekick | Workspace-local productivity | Managed tasks, memory, channels, routines, and status under .sidekick/ |
agent-runtime | Governed model turns | agent-session turns, policy-aware tool gating, orchestration state |
Software Delivery Pack
Section titled “Software Delivery Pack”The Software Delivery Pack provides 90+ tools for software development workflows:
| Namespace | Tools | Purpose |
|---|---|---|
wu:* | 23 | Work Unit lifecycle (create, claim, prep, done, block, recover…) |
mem:* | 14 | Memory layer (checkpoint, inbox, signal, recover…) |
initiative:* | 8 | Initiative management (create, plan, status…) |
file:* | 4 | File operations with audit trail |
git:* | 4 | Git operations with audit trail |
agent:* | 4 | Agent session management |
orchestrate:* | 3 | Multi-agent orchestration |
plan:* | 4 | Plan management |
state:* | 3 | State management |
| Others | 23+ | Gates, validation, config, docs, metrics, flow analysis… |
Every one of these tools routes through the kernel’s execution pipeline — scope intersection, policy evaluation, and evidence recording happen on every call.
Sidekick Pack
Section titled “Sidekick Pack”The Sidekick Pack adds a compact 23-tool workspace productivity surface:
| Namespace | Tools | Purpose |
|---|---|---|
task:* | 6 | Personal and team-local task tracking, updates, completion, cancel |
memory:* | 4 | Workspace-local memory, snippets, and destructive forgetting |
channel:* | 5 | Named message channels, local discovery, and local deletion |
routine:* | 5 | Plan-only routine definitions, updates, stop flow, and deletion |
sidekick:* | 3 | Initialization, status, and export |
Destructive Sidekick lifecycle tools such as task:cancel, memory:forget, channel:delete,
and routine:delete are approval-gated through the pack policy factory when invoked through the
kernel runtime.
Agent Runtime Pack
Section titled “Agent Runtime Pack”The Agent Runtime Pack provides the governed agent:execute-turn contract, policy-aware tool gating, provider normalization, and pack-owned agent-session orchestration.
Pack Structure
Section titled “Pack Structure”A pack is a directory with a manifest.yaml at its root:
Directorymy-pack/ - manifest.yaml (declares tools, policies, evidence types) - constants.ts (pack id, version, shared strings) - config.schema.json (validates workspace config for the pack) - capability-factory.ts (derives runtime scopes/env from resolved pack config) - policy-factory.ts (returns conditional PolicyRule objects) - tools/ - types.ts (shared type definitions) - tool-impl/ - my-tool.ts (runtime implementation)
- …
The manifest is the contract between a pack and the kernel. It declares:
- Tools — what the pack can do (name, entry point, permissions, required scopes)
- Policies — static rules the kernel evaluates at specific lifecycle triggers
- Evidence types — kinds of audit records the pack produces
- Task types — what domain objects the pack manages (e.g.,
work-unit) - State aliases — friendly names for kernel state machine states
- Lane templates — pre-defined lane configurations
- Config namespace —
config_keyandconfig_schemafor pack-specific workspace settings - Capability factory — runtime augmentation of
required_scopesandrequired_env - Policy factory — runtime-authored rules that can inspect
PolicyEvaluationContext
Minimal manifest
Section titled “Minimal manifest”How Packs Are Loaded
Section titled “How Packs Are Loaded”When the kernel starts, it reads the workspace spec (workspace.yaml) which lists pinned packs:
For each pack pin, the kernel:
- Resolves the pack root — in order:
workspaceRoot/packs/workspaceRoot/packages/@lumenflow/packs/(monorepo development)- bundled CLI packs (
@lumenflow/cli/packs/) for end-user installs - a git repository (
source: git) or registry cache (source: registry) when configured
- Parses the manifest — validates against the schema, checks that
idandversionmatch the pin. - Validates pack config — if the manifest declares
config_keyandconfig_schema, the kernel validates the matching workspace config and makes the resolved payload available at runtime. - Validates import boundaries — scans all source files to ensure the pack only imports from allowed dependencies (
node:*builtins,@lumenflow/kernel, and relative imports within the pack). No arbitrary npm packages allowed. - Verifies integrity — computes a SHA-256 hash of all pack files and compares it to the pinned hash. A mismatch means the pack was modified and the kernel refuses to load it.
- Registers tools — each tool declared in the manifest becomes available in the kernel’s tool registry, then optional capability factories can augment
required_scopesandrequired_envusing the resolved pack config. - Injects policies — pack-declared policies are added to the
packlayer of the policy engine, and optional policy factories can add conditional rules such as intent-aware gating.
The Pack Ecosystem
Section titled “The Pack Ecosystem”LumenFlow is pack-first. First-party packs share the same manifest contract and are loaded from local paths, monorepo packages, bundled installs, or external sources such as git and registries.
See:
Tool Implementation Pattern
Section titled “Tool Implementation Pattern”Pack tools follow a standard pattern. Each tool returns a ToolOutput:
Tools can be implemented as:
- In-process handlers — TypeScript functions that run directly in the kernel process. Used for lightweight read operations.
- Subprocess handlers — executed in a sandboxed subprocess via
spawnSync. Used for write operations and anything that needs OS-level isolation.
The Software Delivery Pack uses two implementation strategies. Most tools (~80) use the runtime CLI adapter to reuse existing CLI command modules in-process. A smaller set (~10) use direct implementations with simple-git wrappers and Node builtins. See Tool Execution for the full execution architecture.
Next Steps
Section titled “Next Steps”- Kernel Runtime — How the kernel dispatches and governs tool calls
- Create a Pack — Step-by-step guide to building your own pack
- Scope Intersection — How pack tool scopes interact with other permission levels
- Policy Engine — How pack-declared policies are evaluated