Package Exports
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (orbital-command) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Orbital Command
The orchestration layer for Claude Code.
The control layer that turns scattered Claude Code sessions into a coordinated engineering operation. Full visibility across every project. Enforced consistency every dispatch. Living documents from idea to production.
18 skills | 33 hooks | 6 agents | 13 quality gates | 4 workflow presets
Install
npm install -g orbital-command
orbital- Install -- adds the
orbitalCLI to your PATH - Run
orbital-- the setup wizard configures Orbital globally (~/.orbital/), then launches the dashboard - Add your first project -- the dashboard opens with an Add Project modal. Point it at a git repo and Orbital scaffolds hooks, skills, agents, and workflow config into the project
- Onboarding walkthrough -- the dashboard guides you through the board, dispatch, and key concepts
Prerequisites
- Node.js >= 18
- Claude Code installed and available as
claudeon your PATH - iTerm2 (macOS) -- required for dispatching Claude Code sessions. Orbital opens named, categorized terminal tabs -- one per dispatched scope -- so you can watch sessions in parallel and step in at any time. The dashboard will prompt you to install and open iTerm2 before allowing dispatch.
- C++ compiler for the
better-sqlite3native module:- macOS: Xcode Command Line Tools (
xcode-select --install) - Linux:
build-essential(apt install build-essential)
- macOS: Xcode Command Line Tools (
What You Get
After adding a project, Orbital scaffolds these into your repo:
.claude/
orbital.config.json # Project configuration
hooks/ # 33 lifecycle hook scripts
skills/ # 18 skill definitions (slash commands)
agents/ # 6 agent team definitions
config/ # Workflow config and presets
scopes/
_template.md # Scope document template
planning/ # One directory per workflow column
...| Category | Count | Description |
|---|---|---|
| Hooks | 33 | Shell scripts triggered by Claude Code lifecycle events |
| Skills | 18 | Scope lifecycle, git operations, testing, and session management |
| Agents | 6 | Red, Blue, and Green team agent definitions |
| Presets | 4 | Default (7 columns), Gitflow (9), Development (5), Minimal (3) |
No cloud. No accounts. No lock-in. Scopes are markdown. Events are JSON. Config is JSON. Everything is inspectable, diffable, version-controlled. Stop using Orbital tomorrow -- your work is still files in your repo.
Dashboard
The dashboard runs at http://localhost:4444 and manages all your registered projects from a single view.
| View | Path | Description |
|---|---|---|
| Board | / |
Kanban board with drag-and-drop, swim lanes, sprint containers, dispatch, and batch execution |
| Primitives | /primitives |
Browse and edit agents, skills, and hooks with a directory tree and file editor |
| Guards | /guards |
Quality gate status, violation trends, enforcement rules, override audit trail |
| Repo | /repo |
Git overview, commit log, branches, worktrees, GitHub PRs, deployment history |
| Sessions | /sessions |
Claude Code session timeline with token stats, tool usage, and resume capability |
| Workflow | /workflow |
Visual DAG editor for columns, transitions, hooks, and presets |
| Settings | /settings |
Theme, font selection, and UI scale |
Core Concepts
Scopes
Scopes are the unit of work. Each scope is a markdown file with YAML frontmatter stored in scopes/<column>/. Moving a scope between columns on the board physically moves the file between directories.
---
id: 42
title: "Add user authentication"
status: implementing
category: feature
priority: high
effort_estimate: "1-4H"
blocked_by: [41]
---Each scope document has three parts: Dashboard (status, progress, next actions), Specification (requirements, phases, success criteria -- locked after planning), and Process (exploration log, decisions, implementation notes). An Agent Review section captures findings from automated analysis.
Workflow Engine
The workflow engine defines your Kanban columns, allowed transitions, branching strategy, and lifecycle hooks. Four presets ship out of the box -- switch any time via the Workflow Visualizer or edit .claude/config/workflow.json directly.
| Preset | Columns | Branching | Best for |
|---|---|---|---|
| Default | 7 (Icebox through Main) | Trunk | Most projects |
| Gitflow | 9 (Icebox through Production) | Worktree isolation | Teams with formal releases |
| Development | 5 (Backlog through Dev) | Trunk | Active development, no deploy pipeline yet |
| Minimal | 3 (To Do, In Progress, Done) | Trunk | Experiments, hackathons |
Dispatch
When you dispatch a scope from the board, Orbital validates the transition, resolves the skill command for that edge (e.g., /scope-implement), and spawns a Claude Code session in an iTerm2 tab. Hooks fire during the session and write JSON events to .claude/orbital-events/. The server watches that directory, ingests events into SQLite, and pushes real-time updates to the dashboard via Socket.io.
If the dashboard is offline, events queue as files and get ingested on next launch. Sprint dispatch resolves dependencies via topological sort and launches scopes in parallel across iTerm2 tabs with staggered intervals.
How It Works
The core loop
Everything in Orbital is scope-driven. A scope is a living markdown document -- not a throwaway plan, but a persistent record that carries spec, phases, progress, review results, and decisions with the work from idea to production. Scopes live as files in your repo (scopes/<column>/NNN-title.md), tracked in git alongside your code.
The dashboard presents these scopes as cards on a Kanban board. Each column maps to a stage in your workflow. When you drag a card to the next column, Orbital does the rest -- it validates the transition against the workflow DAG, resolves the skill command wired to that edge (e.g., /scope-implement), and auto-dispatches a Claude Code session in an iTerm2 tab to execute it. The scope document is the session's instructions. Hooks fire throughout, writing JSON events back to the dashboard in real time.
The result: you manage work by moving cards. Orbital handles the orchestration -- which skill to run, which hooks to fire, which agents to invoke, which gates to check. Every dispatch follows the same system, in the same order, through the same gates.
End-to-end flow (Default preset)
Icebox → Planning → Backlog → Implementing → Review → Completed → Main
Create -- Run
/scope-createin a Claude Code session. Orbital scaffolds a scope document inscopes/planning/with a structured template: specification, phases, success criteria, and process sections.Plan -- Fill in the specification. The scope lives in
planning/while requirements are defined. Once the spec is solid, drag the card to Backlog. The spec locks -- no more changes to requirements from here.Implement -- Drag to Implementing. Orbital auto-dispatches
/scope-implementin an iTerm2 tab. The session picks up the scope document and executes its phases end-to-end. Hooks track the session, log commits, and enforce rules throughout.Review -- Drag to Review. Orbital auto-dispatches
/scope-post-review, which fans out the agent team. Red team (Attacker, Chaos) probes for vulnerabilities and failure modes. Blue team (Frontend Designer) checks UX. Green team (Architect, Rules Enforcer) validates structure and standards. Findings flow back to the dashboard in real time.Fix -- If agents found issues,
/scope-fix-reviewexecutes all findings./scope-verifyruns the formal review gate -- spec compliance, test results, 13 quality gates. The scope moves to Completed when everything passes.Ship -- Drag to Main. Orbital auto-dispatches
/git-main, which pushes or creates a PR. Done.
What ties it together
- Skills define what happens at each transition (the prompt Claude Code receives)
- Hooks define what runs automatically during each session (33 lifecycle scripts)
- Agents define who reviews the work (6 agents across 3 teams)
- Gates define what must pass before a transition is allowed (13 quality checks)
- The workflow DAG wires all of these together -- which skill fires on which edge, which hooks attach, which agents trigger, what confirmation level is required
All of this is config-driven and editable via the visual DAG editor in the dashboard.
Event bus
Hooks write JSON events to .claude/orbital-events/ during sessions. The server watches this directory, ingests events into SQLite, and pushes real-time updates to the dashboard via Socket.io. If the dashboard isn't running, events queue as files and get picked up on next launch. No daemon required.
Sprints
For batch work, group multiple scopes into a sprint. The orchestrator resolves dependencies via topological sort, organizes scopes into execution layers, and dispatches them in parallel across iTerm2 tabs with staggered intervals.
Skills
Skills are slash commands invoked in Claude Code sessions. Installed as markdown files in .claude/skills/.
Scope Lifecycle
| Command | Purpose |
|---|---|
/scope-create |
Create a structured scope document with phases and success criteria |
/scope-implement |
Execute a scope end-to-end following defined phases |
/scope-pre-review |
Run full agent team analysis before implementation |
/scope-post-review |
Orchestrate post-implementation quality gates and code review |
/scope-verify |
Formal review gate -- checks spec compliance and test results |
/scope-fix-review |
Execute all code review findings from agent team |
Git Operations
| Command | Purpose |
|---|---|
/git-commit |
Commit work (workflow-aware, routes to trunk or worktree strategy) |
/git-main |
Push or PR scope work to main branch |
/git-dev |
Merge feature branch into dev |
/git-staging |
Create PR from dev to staging |
/git-production |
Create release PR from staging to main |
/git-hotfix |
Emergency fix branching from main |
Testing & Sessions
| Command | Purpose |
|---|---|
/test-checks |
Run 13 quality gates (typecheck, lint, build, tests, rules, etc.) |
/test-code-review |
Full validation suite including agent-driven code review |
/session-init |
Initialize a work session with project context |
/session-resume |
Resume a previous session with saved context |
Agents
Six agents organized into three teams. Auto-triggered by hooks during scope transitions or invoked manually via /scope-pre-review.
| Team | Agent | Focus |
|---|---|---|
| Red | Attacker | Injection vectors, credential exposure, API over-exposure, resource exhaustion |
| Red | Chaos | Failure modes, concurrent access, stale data, orphaned locks, partial completion |
| Blue | Frontend Designer | React components, UX patterns, style consistency, accessibility |
| Green | Architect | Patterns, module boundaries, code structure, scalability |
| Green | Rules Enforcer | Project rules, linting standards, conventions, quality thresholds |
| Green | Deep Dive | Codebase audits, major refactors, pre-launch health reviews |
Agents run in three modes, configured per-transition in the workflow: Quick (relevant agents only), Full (all agents), Security (red team focus).
Quality Gates
Thirteen automated checks that block or allow scope transitions. Reported by hooks and displayed in the Guards view with trend charts and override tracking.
| Gate | What it checks |
|---|---|
type-check |
TypeScript compilation |
lint |
Linter rules |
build |
Build succeeds |
tests |
Test suite passes |
rule-enforcement |
Project-specific rules |
template-validation |
Template compliance |
doc-links |
Documentation links valid |
doc-freshness |
Docs not stale |
no-placeholders |
No TODO/FIXME left behind |
no-mock-data |
No hardcoded test data |
no-shortcuts |
No workaround hacks |
no-default-secrets |
No hardcoded credentials |
no-stale-scopes |
Scopes aren't abandoned |
Hooks
Hooks are shell scripts in .claude/hooks/ that fire automatically during Claude Code lifecycle events. They're registered in .claude/settings.local.json and triggered at these points:
| Trigger | When | Examples |
|---|---|---|
| SessionStart | Claude Code session begins | init-session.sh -- environment setup, session ID caching |
| SessionEnd | Claude Code session ends | end-session.sh -- emits SESSION_END event |
| PreToolUse | Before a tool runs (Bash, Edit, Write, Skill) | block-push.sh, git-commit-guard.sh, scope-create-gate.sh |
| PostToolUse | After a tool completes | scope-commit-logger.sh, exploration-logger.sh |
Hooks communicate through the file-based event bus. When something significant happens, the hook writes a JSON event to .claude/orbital-events/. The server watches, ingests into SQLite, and pushes updates to the dashboard. Events queue naturally when the server is offline.
CLI Reference
The bare orbital command is the primary entry point -- it detects context and shows the right options.
Core
| Command | Description |
|---|---|
orbital |
Context-aware hub (setup, launch, config, doctor, update) |
orbital config |
Interactive config editor (config show, config set <key> <value>) |
orbital doctor |
Health check and version diagnostics |
orbital update |
Sync templates to latest version (--dry-run to preview) |
orbital status |
Show template sync status |
Template Management
| Command | Description |
|---|---|
orbital validate |
Check cross-references and consistency |
orbital pin <path> |
Lock a file from template updates |
orbital unpin <path> |
Unlock a pinned file |
orbital pins |
List all pinned files |
orbital diff <path> |
Show diff between local file and template |
orbital reset <path> |
Restore a file from its template |
Project Management
| Command | Description |
|---|---|
orbital register [path] |
Register a project with the dashboard |
orbital unregister <id> |
Remove a project from the dashboard |
orbital projects |
List all registered projects |
Other
| Command | Description |
|---|---|
orbital emit <TYPE> [JSON] |
Emit an event to the file-based event bus |
orbital uninstall |
Remove all Orbital artifacts from the project |
Configuration
Project configuration lives at .claude/orbital.config.json. Edit directly or use orbital config.
{
"projectName": "My Project",
"serverPort": 4444,
"terminal": {
"adapter": "auto" // "auto" | "iterm2" | "subprocess" | "none"
},
"claude": {
"executable": "claude",
"flags": ["--dangerously-skip-permissions"]
},
"commands": {
"typeCheck": "npm run typecheck",
"lint": "npm run lint",
"build": "npm run build",
"test": "npm run test" // null = disabled
}
}Environment Variables
| Variable | Description |
|---|---|
ORBITAL_PROJECT_ROOT |
Override project root detection |
ORBITAL_SERVER_PORT |
Override server port |
ORBITAL_CLIENT_PORT |
Override client port |
ORBITAL_LOG_LEVEL |
Override log level (debug, info, warn, error) |
Full configuration reference
| Option | Type | Default | Description |
|---|---|---|---|
projectName |
string | Directory name | Display name in the dashboard |
scopesDir |
string | "scopes" |
Directory for scope documents |
eventsDir |
string | ".claude/orbital-events" |
Directory for event bus files |
dbDir |
string | ".claude/orbital" |
Directory for SQLite database |
configDir |
string | ".claude/config" |
Directory for workflow config |
serverPort |
integer | 4444 |
API server port |
clientPort |
integer | 4445 |
Vite dev server port |
logLevel |
string | "info" |
Logging level |
terminal.adapter |
string | "auto" |
Terminal adapter: auto, iterm2, subprocess, none |
terminal.profilePrefix |
string | "Orbital" |
Prefix for iTerm2 dynamic profiles |
claude.executable |
string | "claude" |
Path to Claude Code CLI |
claude.flags |
string[] | ["--dangerously-skip-permissions"] |
Default flags for dispatched sessions |
commands.typeCheck |
string|null | null |
Type-check command |
commands.lint |
string|null | null |
Lint command |
commands.build |
string|null | null |
Build command |
commands.test |
string|null | null |
Test command |
categories |
string[] | ["feature","bugfix","refactor","infrastructure","docs"] |
Scope categories |
agents |
object[] | 6 default agents | Agent definitions (id, label, emoji, color) |
FAQ
Can I use this without Claude Code?
No. Orbital is purpose-built for Claude Code. Hooks, skills, agents, and session tracking all depend on Claude Code's lifecycle events and CLI.
Do I need to keep the dashboard running?
No. Hooks write events as JSON files regardless of whether the server is running. Events queue up and get ingested when you next launch.
How do I customize the workflow?
Open the Workflow Visualizer (/workflow in the dashboard). Add or remove columns, create transitions, attach hooks, set confirmation levels. Or edit .claude/config/workflow.json directly.
What if I don't have iTerm2?
The dashboard requires iTerm2 for dispatch -- it will show a modal prompting you to install or open it before any session can launch. iTerm2 lets Orbital open named, categorized terminal tabs (one per dispatched scope) so you can watch multiple sessions run in parallel and step into any of them. There is a "subprocess" terminal adapter in the config for headless/scripting use cases, but the dashboard UI expects iTerm2.
How do sprints work?
Sprints group multiple scopes for batch execution. The orchestrator resolves dependencies via topological sort, organizes scopes into execution layers, then dispatches them in parallel across iTerm2 tabs.
How do I add my own agents?
Create a markdown file in .claude/agents/<team>/ following the existing agent format. Add the agent to the agents array in orbital.config.json. Agents are dispatched as independent Claude Code sessions with the markdown file as their system prompt.
How do I reset everything?
orbital uninstall removes all Orbital artifacts. Your scopes/ directory and event history are preserved.
Development
npm install
npm run dev:local| Script | Purpose |
|---|---|
npm run dev:local |
Express API (4444) + Vite dev server (4445) with hot-reload |
npm run dev:server |
Express API only (tsx watch) |
npm run dev:client |
Vite dev server only |
npm run typecheck |
Type-check both tsconfigs (client + server) |
npm run test |
Run all tests |
npm run build |
Vite production build (frontend) |
npm run build:server |
TypeScript compile server to dist/server |
npm run validate |
Full pipeline: typecheck, test, build, build:server |
Two tsconfigs: tsconfig.json covers client + shared code. tsconfig.server.json covers server + shared code. Both use strict mode.
Symlinked templates: This repo uses Orbital on itself. The .claude/ runtime directories are symlinks into templates/. Always edit templates/ (git-tracked source), not .claude/ directly.
Releasing:
npm run release # patch bump
npm run release -- minor # minor bump
npm run release -- major # major bumpValidates the full pipeline, bumps the version, creates a git tag, and pushes. The tag push triggers CI to publish to npm with provenance.
See CHANGELOG.md for version history.
Contributing
Open an issue first for large changes. Fork, npm install, npm run dev:local, validate with npm run validate before submitting.
License
MIT