The open source version of Claude Project that gives you the context ownershp Orbital, an open source project, stores AI coding agent context as plain files in a user's local project folder so that Claude Code, Codex, and Cursor can share the same project state, decisions, lessons, queued work, and artifacts. The project maintains five files — PROJECT_STATE.md, DECISIONS.md, LESSONS.md, queue.json, and orbital/output/ — and claims setup in under 5 minutes with no Python or Node required and support for DeepSeek, Anthropic, OpenAI, and Moonshot API keys. Orbital's stated goal is to move the unit of work from the individual agent session to the project, so switching tools or hitting a usage limit does not require re-explaining context. English · 简体中文 https://github.com/zqiren/Orbital/blob/main/README.zh-CN.md Claude Code hit its usage limit mid-task. Codex picked it up in the same conversation. Nothing was re-explained. The project agent Is your context actually yours? The plan it took three rounds with Claude Code to settle, the file Codex left half-edited, the trade-off you decided in Cursor: each one is locked inside its own session. Close the session, hit the usage limit, switch tools, and that context is out of reach. Next task, you explain it all again. You are the agent's intern: copying and pasting, ferrying context, remembering where all the odd files live, while the agent gets the thinking. Orbital takes the context out of the session and puts it back in your local folder. Any agent can pick it up at any time, with all of it intact. Claude Code, Codex and Cursor all work. The context is yours. The intelligence is interchangeable. Your context, usable by any agent Set up in under 5 minutes. No Python or Node required. Bring your own API key. One-minute demo: one task, two agents, nothing re-explained demo-en-web.mp4 You're three rounds into a design discussion with Claude Code when it stops with "You're out of usage credits." Your Codex quota is sitting right there, but Codex knows nothing about this project: the goal, the two decisions you just made, the half-edited files. You'd have to explain all of it again. People already use several capable agents at work — for the newest model, the leftover quota, or because a particular tool is better at the job. But each agent works inside its own session, with its own context and history. When you move between sessions or tools, you become responsible for carrying the project between them: restating goals, explaining previous decisions, locating artifacts, and checking what was left unfinished. You end up working as their intern, ferrying context between them to keep your own project moving. Orbital changes the unit of work from the session to the project. A project agent stays responsible for the project across tasks, sessions, and worker agents. It maintains the shared context, decides what needs to happen next, delegates when useful, and records every outcome back into the project. Individual agents complete tasks. Orbital keeps the project moving. Orbital maintains five things that normally disappear or fragment between agent sessions — all of them as plain files in your project folder: - State — what is true about the project now PROJECT STATE.md - Decisions — what was decided and why DECISIONS.md - Lessons — what the project has learned LESSONS.md - Work — what is running, completed, or blocked queue.json . Every queued task ends Completed or Blocked — an agent that stops without a verdict gets re-prompted, then force-blocked with a reason. Nothing drifts away silently. - Artifacts — what the agents researched, wrote, or built the workspace itself, plus orbital/output/ These stay in the local project and become context for future work. On a cold start, Orbital assembles them into its own system prompt before it acts. When Orbital delegates, the worker is pointed at those same files and told they are authoritative — that briefing is rendered fresh on every dispatch, not something you paste in. Each worker also keeps its own memory file inside the project, so it accumulates its own experience across dispatches. When the task finishes, Orbital reads the result and records what matters back into the project. The worker can change. The project continues. 1. Launch Orbital — the setup wizard guides you through two steps: Step 1 — LLM Provider: In mainland China, tap Sign in with TokenDance , authorize, and start on free tokens. Otherwise pick a provider from the preset cards, follow the key-console link to grab an API key, and paste it in. Supports DeepSeek, Anthropic, OpenAI, Moonshot, and a dozen other providers. Step 2 — Connect Your Accounts: Link API connectors Google Calendar, Drive and sign in to sites your agents will need Google, GitHub, etc. so they can browse without getting blocked by CAPTCHAs. Everything here is optional and can be done later in Settings.2. Create a project — give it a name, pick a workspace directory, set an autonomy level 1. Chat — type a task in the chat bar and the project agent handles it 2. Walk away — queue the next tasks; each finished one becomes context the next builds on The project agent keeps the project's state, decisions, and lessons current across sessions. It delegates to Claude Code, Codex, or Gemini CLI against the same project context, then records the result. Memory, scheduling, and sub-agents are table stakes now — every tool below has them. These are the three questions where the answers still differ. | July 2026 | Orbital | Claude Code https://code.claude.com/docs/en/desktop | Codex https://developers.openai.com/codex/ | Hermes https://github.com/NousResearch/hermes-agent | OpenClaw https://docs.openclaw.ai/ | |---|---|---|---|---|---| | Can a different agent pick up the next task? | ✅ Claude Code, Codex, Gemini CLI, Cursor, any CLI | ❌ Claude workers | ❌ Codex workers | ❌ Hermes workers | Partial external harnesses via ACP | | What stops a queued task from drifting? | ✅ Enforced Completed/Blocked closure | ❌ | ❌ | ❌ | ❌ | | Who owns the budget, approvals, and audit trail? | ✅ The project | Partial permissions + run history | Partial approvals + enterprise audit | Partial command approvals | Partial approvals + logs | The short version: the difference isn't any one capability — it's that the project, not the session, is the unit that owns state, workers, and governance. Orbital Is / Is Not | Orbital IS | Orbital IS NOT | |---|---| | A project workspace where you and your agents share the same files, history, and context | A cloud service — everything runs on your machine | | A sub-agent coordinator: Claude Code via SDK, Codex via app-server, and Gemini CLI, Cursor, or other workers via PTY/ ACP https://agentcommunicationprotocol.dev/ | An OpenClaw fork — custom agent loop, built from scratch | | Remote supervision: approve actions, browse workspace files, upload from phone | A chat wrapper — agents run continuously via cron and file watchers | | Budget controls, autonomy presets, credential management OS keychain | Fully autonomous God Mode yet — scheduler-driven today, full autonomy on the roadmap | Project & Workspace Model Each project maps to a workspace directory and maintains its own sessions, queue, triggers, and configuration. Browse, preview, and upload files in each project's workspace — and watch the agent's output accumulate {workspace}/ +-- AGENTS.md Onboarding signpost for external agents seeded at creation, user-owned +-- orbital/ Operational metadata +-- sessions/ | +-- {session id}.jsonl Append-only session log +-- instructions/ | +-- project goals.md | +-- user directives.md +-- skills/ Project skills +-- sub agents/ Sub-agent transcripts + per-worker MEMORY.md +-- tool-results/ Tool output artifacts +-- output/ Agent work artifacts | +-- screenshots/ Browser screenshots | +-- pdfs/ Saved PDFs | +-- shell-output/ Shell command output +-- queue.json Task queue queued / running / completed / blocked +-- PROJECT STATE.md Current-state scratchpad overwrite +-- DECISIONS.md Durable decisions + reasoning +-- LESSONS.md Durable heuristics / playbooks +-- INDEX.md Navigation map: file tree + one line per file +-- DECISIONS ARCHIVE.md Demoted decisions read-on-demand +-- LESSONS ARCHIVE.md Demoted lessons read-on-demand ~/orbital/ Home global daemon infrastructure +-- daemon.pid Singleton enforcement +-- device.json Device identity +-- browser-profile/ Shared browser profile +-- credential-meta.json Credential metadata Session format : One JSON line per message role, source, content, timestamp, tool calls . Append-only with file locks. Never modified except during compaction. Context Management & Compaction This is how the project agent keeps context available across sessions. The agent-maintained Layer-1 files are injected every turn bounded per file and consolidated at session boundaries: | File | Purpose | Bound | |---|---|---| | PROJECT STATE.md | Current-state scratchpad — what's true now overwrite, not a changelog | token cap → trim oldest | | DECISIONS.md | Durable decisions + reasoning merge-and-supersede, never contradict | token cap → demote oldest-cold to archive | | LESSONS.md | Durable heuristics / technical playbooks kept intact, never word-trimmed | token cap → demote oldest-cold to archive | | INDEX.md | Navigation map only: file tree + one sentence per file | one-sentence format + token cap | | DECISIONS ARCHIVE.md , LESSONS ARCHIVE.md | Demoted durable entries, read-on-demand pointed to by INDEX | unbounded | Each entry carries system-managed metadata id / created / touched / tag so dedup runs on recency. Per-turn injection bounds each file to a budget derived from the active model's context window. Session-end runs a deterministic size backstop demote/trim, never an LLM call plus a best-effort LLM dedup/merge that fixes contradictions. SESSION LOG.md was retired; the Layer-1 files are injected every turn, so a separate session history is redundant. Cold resume : On session start, these files are assembled into the system prompt so the agent can reorient before it acts. DECISIONS.md and LESSONS.md — written by the agent as it works, and carried into every future session Compaction when context usage exceeds 80% : memory flush, LLM-driven summarization of older messages, recent messages kept intact, post-compaction reorientation with project goals and current state. Prefix caching v0.4.2 : the system prompt is split into static, semi-stable, and truly-dynamic sections so up to ~95% of input tokens hit the provider's prefix cache on follow-up turns. See the v0.4.2 release notes https://github.com/zqiren/Orbital/releases/tag/v0.4.2 for benchmark numbers. Sub-Agent Delegation Orbital is not tied to a single AI tool. The project agent plans and delegates, while specialized workers execute — each reading the same accumulated project context. Any CLI-based agent can be registered via a manifest file; Claude Code, Codex, Cursor, Gemini CLI, Aider, Cline, Goose, Copilot CLI, and Continue ship with one. Each dispatch renders a fresh inheritance prompt that points the worker at PROJECT STATE.md , DECISIONS.md , LESSONS.md , INDEX.md , the project's instructions, and its skills — declaring them authoritative and off-limits for writes. Workers read them on demand rather than receiving a pasted copy, so the brief never goes stale. Each sub-agent keeps its own long-term memory across dispatches — curate what it remembers... ...then delegates a task to @claudecode, reviews the result, and writes it back into the project Transport types: | Transport | Use Case | |---|---| | Codex app-server | Native Codex JSON-RPC over stdio, with structured lifecycle and approvals | | Pipe | stdin/stdout subprocess, JSON streaming | | PTY | Pseudo-terminal for interactive agents — Gemini CLI, Aider, Cline, Goose, Copilot CLI, Continue | | SDK | Direct Claude SDK integration | | ACP | Agent Communication Protocol https://agentcommunicationprotocol.dev/ — Cursor, via its official ACP server | Note: Codex uses its native app-server path, not PTY or ACP. Orbital launches codex app-server and speaks JSON-RPC directly. ACP is available for any ACP-compliant worker; PTY is the default for other interactive CLI agents. Task Queue Each project has a queue, stored with the project at orbital/queue.json . Add tasks — pin urgent ones to the front — and your agent works through them one at a time, in order, without you watching. The agent must declare an outcome on every item; it can't silently drift to the next one: | Outcome | What happens | |---|---| | Completed | The agent reports a short summary; the item moves to Completed and the queue advances. | | Blocked | The agent states the reason missing credentials, ambiguous requirements, … ; the item moves to Needs Attention and the queue moves on. You unblock it when ready. | Pause to steer. Pause the queue mid-item to chat freely — your clarifications land in the same session, so the agent sees them when you resume. Continuity by design. Each completed item's artifacts are already in the project when the next item starts, so the agent can use them when supervising later tasks. The project's triggers schedules and file watchers are listed in the queue's Automations section alongside your tasks. Queue tasks and walk away — each finished one becomes context the next builds on Workbench — what only you can decide beta Some things an agent genuinely cannot finish for you: a spend decision, a message that has to come from your account, a judgment call between three options it already researched. As the agent works, it flags those in the project's state file — and the Workbench collects them from every project into one list. Each card carries its provenance, so you are never asked to act on a bare instruction. Expand Why I believe this and you see the evidence the agent recorded and the session it came from. Cards sort overdue-first, then oldest, and each one exits in a single tap — Done once you've handled it, Delete when it stopped mattering. Tapping the card itself opens that project's chat with the decision pre-filled, so answering is one message instead of a hunt for context. The Today strip along the top lists the day's automation slots, including the ones that already fired — so a single glance covers both what needs you and what ran without you. Every project's open decisions in one list — with the evidence behind each one a click away Calendar beta Automations you set up months ago shouldn't fire invisibly. Every enabled schedule trigger projects its upcoming runs onto a week grid, so the rhythm of the project is something you can see rather than remember. Dated commitments the agent recorded in the project state land on the same grid and drop off once they're resolved, and connecting Google Calendar brings those events into the same view. The project agent can read this calendar too, so "what's already on the schedule" is context it plans around instead of something you have to restate. The week ahead, as your automations will actually run it Quick Tasks The sidebar includes a Quick Task section for fire-and-forget interactions. Scratch projects skip the full project creation flow — useful for one-off tasks that don't need a dedicated workspace. Self-Improving Skills Agents create reusable skills from multi-step workflows and consult matching skills before starting similar tasks. Skills are stored as SKILL.md files in the workspace and managed through the Settings UI — another way the project gets more capable the longer it runs. Skills like Efficient Execution, Learning Capture, and Task Planning shape how your agent works — and the agent adds its own Built-in Tool Suite The project agent has access to these tool categories: | Category | Tools | Description | |---|---|---| | Shell | shell | Command execution with network-aware detection | | File | read , write , edit , glob , grep | File operations and search within workspace | | Browser | 26 actions via Patchright | Navigate, click, type, extract, screenshot, multi-tab, PDF, web search, URL fetch | | Triggers | create trigger , list triggers , update trigger , delete trigger | Schedule and file-watch triggers via natural language | | Credentials | request credential | Agent-initiated credential request — opens secure modal | | Delegation | agent message | Route tasks to sub-agents | | Access | request access | Request sandbox portal to a path outside the workspace | Browser Automation Built on Patchright a Playwright fork with anti-bot-detection : - Stealth mode : Anti-automation detection scripts injected into every browser context - Shared profile : One browser profile across all projects — log into services once, all agents share cookies - Accessibility-first : snapshot returns an accessibility tree with ref=eN element references for reliable interaction - 26 browser actions : navigate, click, type, fill, press, hover, select, drag, upload, snapshot, screenshot, extract, search page , evaluate, tab management, go back/forward, reload, wait, PDF export, web search, URL fetch, batch Your agent browsing arxiv.org — scanning for AI reasoning papers on a daily schedule Continuous Operation & Triggers Agents run continuously via triggers — no manual intervention needed. Create triggers through natural language in the chat: "Watch the uploads/ folder for new .jpg files and analyze them" "Run a research scan every morning at 6 AM" The project agent translates this into a create trigger tool call with the appropriate type and parameters. Trigger types: | Type | Configuration | Example | |---|---|---| | Schedule | Cron expression + timezone | 0 6 daily at 6 AM | | File Watch | Path + glob patterns + debounce | uploads/ .jpg , 5s debounce | File watch trigger: watches uploads/ for new photos and analyzes each one on arrival Schedule trigger: a daily competitor watch dispatched every day at 2 PM — 19 runs so far Real-world example — Health Tracker with file watch: Left: "Watch uploads/ for meal photos and track calories." Right: Drop a photo, get instant nutritional analysis. LLM Provider Routing & BYOK 14 providers supported out of the box: Anthropic, OpenAI, DeepSeek, Moonshot Kimi , Groq, Google Gemini, xAI, Mistral, Together, OpenRouter, Zhipu, Qwen, TokenDance 词元跳动 — China-mainland model router , plus a custom entry for any OpenAI-compatible endpoint e.g., Ollama, Azure OpenAI, self-hosted models . - SDK routing : Anthropic SDK for Anthropic, OpenAI SDK for OpenAI-compatible providers - Per-model metadata : Display name, tier, context window, max output, capabilities vision, tool use, streaming , pricing - Fallback rotation : When the primary provider fails, the loop rotates to fallback providers with error classification transient, rate limit, abort Autonomy & Approval System Three autonomy presets control how much supervision agents receive: | Preset | Shell | File Write | Browser | Description | |---|---|---|---|---| | Hands-off | Auto | Auto | Auto | Maximum autonomy. Only request access requires approval. | | Check-in | Approval | Approval | Write only | Balanced. Default for external agents. | | Supervised | Approval | Approval | All except read | Maximum oversight. | Pick an autonomy level and set budget limits per project Approval flow: 1. Interceptor catches tool call based on autonomy rules 2. Frontend shows an Approval Card with tool name, arguments, and context 3. User can Approve , Deny , or Auto-approve for 10 minutes 4. Per-action bypass: same tool+args auto-approved for 60 seconds Approve agent actions from your phone — with full context and optional guidance Cost Controls & Budget Limits Per-project budget limits prevent runaway spending: | Setting | Description | |---|---| | Budget Limit USD | Maximum spend for the project | | Budget Action | ask pause and prompt user or stop halt the agent | | Spent | Running total with reset option | The agent loop tracks cumulative token usage and computes cost using per-model pricing from the provider registry. When the budget threshold is reached, the configured action fires ask pauses the session; stop halts the agent . Budget events do not currently trigger push notifications. Set a limit and a reset period; watch the live per-model spend and cost breakdown Mobile Remote Control Control agents from your phone on the local network or via a cloud relay. Left: Project dashboard on phone. Right: Your agent completes its research after you approve from anywhere. Local network : Scan the QR code in Settings to open Orbital on your phone via LAN. Scan to open Orbital on your phone — same Wi-Fi network required Cloud relay optional : Deploy a relay server for access outside your home network. Push notifications for approval requests and agent status changes. Credential Management Website credentials stored in your system keychain. Your agent always asks permission before using them. - API keys : Stored in OS keychain keyring , masked in API responses, per-project BYOK override - Website credentials : Metadata in credential-meta.json , values in OS keychain. The request credential tool lets agents request credentials mid-session via a secure modal — credentials never appear in chat history. Loop Safety Guards The agent loop includes multiple safety mechanisms to prevent runaway execution: | Guard | Threshold | Behavior | |---|---|---| | Token budget | 100M tokens configurable | Hard stop on cumulative usage | | Repetition detection | 5 identical action hashes | Forces different approach | | Ping-pong detection | 3 identical consecutive pairs | Breaks alternating cycles | | Circuit breaker | 2 consecutive identical errors | Blocks tool until new user message | | Context overflow | 3 consecutive overflows | Hard stop after progressive reduction | Desktop App & System Tray Orbital ships as a desktop application bundled with PyInstaller: - System tray : Agent activity status, quick access menu, running port in tooltip - Native window : Embeds the React frontend via pywebview — no browser needed - Daemon lifecycle : Desktop app spawns the daemon on launch, manages port allocation, cleans up on exit - Sleep prevention : Blocks system sleep while agents are active Windows SetThreadExecutionState , re-allows when idle Orbital is one persistent agent bound to a project — not a chat session. It acts as a local control plane for the project's workspace, instructions, state, queue, budget, and approval rules. It plans, delegates, supervises, and records outcomes; worker agents execute against the same project context. You supervise from anywhere. flowchart TB UI "