https://github.com/hesamsheikh/octogent
A thin orchestration dashboard over Claude Code for managing context, automation, and developer headspace. You need tentacles. 🦑
https://github.com/hesamsheikh/octogent
agent-engineering agentic-workflow ai-agents claude claude-code claude-hooks claude-skills codex dashboard
Last synced: 2 months ago
JSON representation
A thin orchestration dashboard over Claude Code for managing context, automation, and developer headspace. You need tentacles. 🦑
- Host: GitHub
- URL: https://github.com/hesamsheikh/octogent
- Owner: hesamsheikh
- License: mit
- Created: 2026-02-24T12:09:46.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-04-13T18:12:32.000Z (2 months ago)
- Last Synced: 2026-04-13T20:12:20.736Z (2 months ago)
- Topics: agent-engineering, agentic-workflow, ai-agents, claude, claude-code, claude-hooks, claude-skills, codex, dashboard
- Language: TypeScript
- Homepage:
- Size: 3.49 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Agents: AGENTS.md
Awesome Lists containing this project
README
too many terminals, not enough tentacles

[](https://www.typescriptlang.org/)
[](https://nodejs.org/)
[](https://x.com/Hesamation)
[](https://discord.gg/vtJykN3t)
# Octogent
It's really not fun to have **ten Claude Code sessions open at once**, constantly switching between them and trying to remember what each one was supposed to do. *Things get blurry fast* when one agent is doing documentation, another is touching the database, another is changing the API, and another is somewhere in the frontend. **Octogent** tries to fix that by giving each job its own scoped context, notes, and task list, while also making it possible for Claude Code to **spawn other Claude Code agents**, assign them work, and communicate with them.
## The Vision
This repo is a personal exploration of what an AI coding environment might look like when terminal coding agents are treated as parts of a bigger orchestration layer, not the final interface by themselves. The point is not to hide **Claude Code** behind abstractions. The point is to make *multi-agent work less chaotic for the developer* on a real codebase.
## Screenshots



## What Octogent Does for You
- **Creates tentacles as context layers** so agents can work with scoped markdown files instead of broad, messy chat context
- **Uses `todo.md` as an execution surface** so tasks stay visible, trackable, and ready for delegation
- **Runs multiple Claude Code terminals** so one developer can coordinate several coding sessions at once
- **Spawns child agents from todo items** so parallel work has a concrete source of truth
- **Supports inter-agent messaging** so workers and coordinators can report completion, blockers, and handoff notes
- **Keeps agent-facing context in files** so the system is more durable than a single prompt thread
- **Provides a local API and UI** for terminal lifecycle, persistence, websocket transport, and orchestration
A **tentacle** is a folder under `.octogent/tentacles//` that holds agent-readable markdown such as `CONTEXT.md`, `todo.md`, and any extra notes needed for that slice of the codebase.
The octopus metaphor is literal: *one octopus, many tentacles, different work happening at the same time*.
## Tentacles
A **tentacle** is a scoped job container. It gives one slice of work its own files, notes, and `todo.md` so the agent is not forced to reconstruct the entire codebase context from chat history.
What it does:
- keeps context local to one area such as documentation, database work, API changes, or frontend work
- gives agents durable files they can read and update
- provides a natural source for delegation through todo items
For the full model, see [Tentacles](docs/concepts/tentacles.md) and [Working With Todos](docs/guides/working-with-todos.md).
## Context, Notes, and Task Lists
In Octogent, a tentacle is not only a task bucket. It is also where the job keeps its local context. That can include notes about one part of the codebase, implementation details, handoff files, and a `todo.md` that tracks what still needs to happen. A Claude Code agent can read and update those files as the work moves forward.
That means you can:
- keep documentation, database, API, or frontend work separated into different job contexts
- store the notes that help an agent understand that part of the codebase
- spawn one agent for one specific item
- break a larger job into multiple items
- launch a swarm so several agents work through the list in parallel
- use the files inside the tentacle as the shared source of truth for what is done and what is left
For the full model, see [Tentacles](docs/concepts/tentacles.md) and [Working With Todos](docs/guides/working-with-todos.md).
## Claude Code Managing Claude Code
One of the main ideas here is that **Claude Code** should not only be treated as a single terminal session waiting for a human prompt. In Octogent, one Claude Code agent can coordinate other Claude Code agents, assign them specific jobs, and exchange short messages with them while the human stays at the orchestration layer.
This is different from Claude Code's subagent spawning, since it allows you to directly see and control what each worker agent is doing.
That means Octogent is not just a dashboard for multiple terminals. It is also a way to structure parent-worker behavior around scoped tasks and shared context files.
For the current model, see [Orchestrating Child Agents](docs/guides/orchestrating-child-agents.md) and [Inter-Agent Messaging](docs/guides/inter-agent-messaging.md).
## How It Works
Octogent separates three concerns that usually get mixed together in a pile of terminals:
1. **Context** lives in `.octogent/tentacles//`. `CONTEXT.md` explains the area, `todo.md` supplies executable work items, and extra markdown files hold notes or handoffs.
2. **Execution** lives in terminal records and PTY sessions managed by the local API. A terminal can attach to an existing tentacle, and several terminals can share one tentacle during swarm work.
3. **Isolation** is optional. Shared terminals run in the main workspace; worktree terminals run under `.octogent/worktrees//` on `octogent/` branches.
Deck reads the tentacle files directly, parses checkbox items from `todo.md`, and uses incomplete items to generate worker prompts. Claude hooks feed the API with agent state, transcript, and idle events so the UI can show more than raw terminal output.
## Quick start
Local development
```bash
pnpm install
pnpm dev
```
This starts the API and web app for local development.
Current install status
```bash
Octogent is not published to the npm registry yet.
```
For local development:
```bash
pnpm install
pnpm dev
```
For a local global CLI install from a clone:
```bash
pnpm install
pnpm build
npm install -g .
octogent
```
The registry install flow `npm install -g octogent` will only work after the package is published.
On first run, **Octogent** creates the local `.octogent/` scaffold automatically, assigns a stable project ID, picks an available local API port starting at `8787`, and opens the UI unless `OCTOGENT_NO_OPEN=1` is set.
## Requirements
- Node.js `22+`
- `claude` installed for the supported agent workflow
- `git` for worktree terminals
- `gh` for GitHub pull request features
- `curl` for the current Claude hook callback flow
Startup fails if neither `claude` nor another supported provider binary is installed. The current docs only cover **Claude Code**.
## What persists
- `.octogent/` keeps project-local scaffold and worktrees
- `~/.octogent/projects//state/` keeps runtime state, transcripts, monitor cache, and metadata
- `.octogent/tentacles//` keeps the context files and todos that agents read
PTY sessions survive browser reloads during the idle grace period, but they do **not** survive an API restart. Octogent marks previously running terminal records as `stale` on startup when it cannot reattach them to a live PTY session; use `octogent terminal list`, `stop`, `kill`, and `prune` to inspect and clean them up. Octogent caps live PTY sessions at 32 by default to protect the host; set `OCTOGENT_MAX_TERMINAL_SESSIONS` to a positive integer to tune that limit for larger orchestration runs.
## Docs
- [Docs Home](docs/index.md)
- [Installation](docs/getting-started/installation.md)
- [Quickstart](docs/getting-started/quickstart.md)
- [Mental Model](docs/concepts/mental-model.md)
- [Tentacles](docs/concepts/tentacles.md)
- [Runtime and API](docs/concepts/runtime-and-api.md)
- [Working With Todos](docs/guides/working-with-todos.md)
- [Orchestrating Child Agents](docs/guides/orchestrating-child-agents.md)
- [Inter-Agent Messaging](docs/guides/inter-agent-messaging.md)
- [CLI Reference](docs/reference/cli.md)
- [Filesystem Layout](docs/reference/filesystem-layout.md)
- [API Reference](docs/reference/api.md)
- [Experimental Features](docs/reference/experimental-features.md)
- [Troubleshooting](docs/reference/troubleshooting.md)
- [Contributing](CONTRIBUTING.md)
## Contributor setup
Octogent is not actively reviewing pull requests right now. If you still open one and any code was written with AI, disclose which coding agent and model were used. For contributor workflow and expectations, see [CONTRIBUTING.md](CONTRIBUTING.md).