Skip to content

Sidekick Runtime Boundary

The Sidekick Pack is a first-party pack for lightweight workspace productivity. It does not replace the kernel, and it does not own framework-level orchestration. Instead, it contributes a narrow set of tools and evidence-bearing state transitions within its own .sidekick/ data boundary.

  • .sidekick/ is the pack-owned storage root.
  • routine:run is plan-only. It resolves and returns the ordered routine steps but does not execute them.
  • routine:update with enabled: false is the supported stop flow for routines.
  • task:cancel is the task cancellation primitive; it adds a terminal canceled state instead of hard-deleting the task.
  • sidekick:export is read-only. It returns stored data as JSON and does not write export artifacts.
  • Every write-capable and destructive tool supports dry_run so callers can validate the action without persistence.
  • The manifest is the public contract for tools, scopes, evidence types, and policies.

Like every other pack, Sidekick tools still pass through:

  1. scope intersection
  2. policy evaluation
  3. tool execution
  4. evidence recording

That means task creation, memory writes, channel updates, and routine definitions all receive the same governance treatment as any other kernel tool call.

Sidekick now also uses pack-authored approval rules for destructive lifecycle actions:

  • task:cancel
  • memory:forget
  • channel:delete
  • routine:delete

When those tools are invoked through the kernel runtime, policy evaluation returns approval_required before execution until the host resolves the approval request.

  • It does not execute autonomous workflow DAGs.
  • It does not bypass kernel policy enforcement.
  • It does not expand into every possible provider or external integration.
  • It does not move generic agent-turn execution into Sidekick; that belongs to the Agent Runtime Pack.

Use Sidekick when you need a compact, governed workspace productivity layer:

  • track local tasks
  • update or cancel those tasks without leaving the governed runtime
  • keep reusable notes, memories, and snippets
  • exchange small messages through named channels and list local channel state
  • define repeatable routines, stop them with routine:update, and inspect the resulting plan
  • export the current workspace-local state for debugging or handoff