coniso
Health Gecti
- License — License: Apache-2.0
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 15 GitHub stars
Code Gecti
- Code scan — Scanned 6 files during light audit, no dangerous patterns found
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
Coniso: context-isolated agent teams for Claude Code
Coniso
Coniso: context-isolated agent teams for Claude Code
by Palatine Labs · pronounced CON-ih-so (short for context isolation)
Call a role and it brings its team. Every agent works in a clean, small context, and a deterministic script handles the bookkeeping so no model has to.
Status: v1.2. The core is stable and in daily use. Expect sharp edges on uncommon setups. Please report them as issues.
Claude Code only. Coniso runs a local Python script, git worktrees and nested subagents, so it needs Claude Code: the terminal, an IDE extension, or the desktop app's Code tab. In claude.ai chat it installs but has nothing to run on. Cowork is untested.
The problem
Long Claude Code sessions on large codebases degrade in two predictable ways:
- Context bleed. One session accumulates file dumps, diffs, test logs and dead ends from every task it has touched. Later work is reasoned against that noise, instructions from early in the session get diluted, and quality drifts.
- Token waste. The same session re-reads all of that history on every turn. Ad hoc subagents help, but they usually hand raw output back up the chain, so the main context fills up anyway, just more slowly.
Coniso is built to reduce both, mostly through structure rather than prompting alone:
- Every subagent gets one packet in a fresh context and is told to return at most 12 lines. Detail (briefs, assignments, diffs, test logs, reports) lives in files under
.coniso/, and agents are told to pass paths, not contents. That keeps raw output from climbing the hierarchy. It's a rule agents follow, not a limit the script enforces. - A plain Python script, not an LLM, owns the bookkeeping: scheduling, dependency waves, sprint state, git worktrees, diffs, merges, plan validation and roadmap edits. No tokens are spent on graph math or rule checks a script can do.
- The main session is built to stay small for hours, and a sprint survives a restart ("director, continue").
Roles
The main session is always the top of the hierarchy. You call a role, and it brings the team it needs:
| You call | Agent · default model | It brings | Use it for |
|---|---|---|---|
Engineer (/coniso:engineer) |
coniso:engineer · sonnet (haiku for mechanical, opus for hard) |
itself: one worker, no worktree | a quick, well-defined task |
Lead (/coniso:lead) |
coniso:lead · sonnet (opus on opus tickets) |
one ticket in its own git worktree: a solo engineer plus one reviewer for S/M tickets, a lead with 3–4 engineers for L tickets | one roadmap ticket or one described feature |
Manager (/coniso:manager) |
coniso:manager · opus |
a track of teams and solo engineers, one dependency wave at a time | a roadmap phase or workstream |
Review Lead (/coniso:review) |
coniso:review-lead · opus |
adversarial reviewers | verdicts on built tickets, or a sweep for defects over merged work |
Director (/coniso:director) |
the main session | everything above | a long session working through a block of your roadmap |
Support roles, spawned by leaders, never by you:
- Reviewer (
coniso:reviewer, andconiso:reviewer-litefor small diffs: patch tickets, delta re-reviews, haiku batches): adversarial review against the acceptance criteria, within a tool-call budget the script sizes from the diff. Every finding needs evidence. It also hunts for gamed tests: deleted or loosened tests, hard-coded expected values, TODOs claimed as done. Builders never judge their own work. - Auditor (
coniso:auditor): a model one tier cheaper than the leader it audits. It challenges judgment calls (model tier, packet size, ordering, scope) and review rulings. Every overrule is logged, so the retro shows whose routing is going wrong. - Scout (
coniso:scout): read-only recon of a codebase area or docs question, written to a short map file.
Specialties (builder, tester, ui, net, level, audio, docs, batch, artisan, synth) are scoped guidance injected into a generalist engineer. They aren't personas with lanes to get stuck in.
Install
Inside Claude Code:
/plugin marketplace add Palatine-Labs/coniso
/plugin install coniso@coniso
Or from your shell:
claude plugin marketplace add Palatine-Labs/coniso
claude plugin install coniso@coniso
Install it from one source only. A copy added from Anthropic's directory on claude.ai appears in Claude Code as coniso@synced; if you also install coniso@coniso, disable one of them.
Requirements
- Claude Code with plugin support. Nested subagents give full parallelism; without them, relay mode keeps sprints working with less (see below). Developed and tested on v2.1.292. Older 2.1.x releases may work but aren't tested.
- Python 3.8+ on
PATHaspython3,pythonorpy -3. Standard library only. - git: each ticket builds in its own worktree. For non-code work, init with
--no-worktrees. - Windows, macOS and Linux.
Experimental flags
None required. Coniso runs on Claude Code's defaults. Two existing values would break nesting, and Coniso offers to fix them (see Permissions):
CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTHbelow 3: fix sets it to 3.CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1: fix sets it to 0. Coniso uses its own hierarchy, not experimental agent teams.
If nested spawning isn't available at all, leaders switch to relay mode on their own: they write spawn requests and the main session spawns for them. Sprints keep working; only parallelism drops. preflight (run on every call) reports which mode you're in.
Quickstart
- Open Claude Code in a git repo with at least one commit.
- Make a roadmap (optional for one-off calls, needed for sprints):
Claude settles the goal, stack and phases with you, then writes/coniso:roadmap new My Projectdocs/roadmap/<Project>-Roadmap.html. - Call a role:
or describe a feature:/coniso:lead P1-01/coniso:lead add CSV export to the reports page. - For a long session:
The Director schedules ready tickets into waves, builds each in its own worktree, reviews them, and merges the ones that pass. It stops at phase gates for your go/no-go./coniso:director P1 - Check progress any time with
/coniso:status. To resume in a fresh session, say "director, continue".
The first call runs init, which:
- installs
.coniso/and git-excludes it; - finds your roadmap and your build and test commands;
- reports which permission rules would stop agents stalling on prompts. Claude then asks whether to add them (below).
Permissions
Coniso never changes your Claude Code settings without your yes. On the first call, Claude shows you exactly what it would add to .claude/settings.local.json and asks:
- allow rules for the Coniso script and your build and test commands, so agents don't stop on every prompt;
- an env fix, only if one of your current values breaks nested subagents (see above).
Say yes and it runs permissions --write. Say no and it records that and stops asking; Coniso still works, but agents may pause for approval. That file is local to you and git-excluded.
You can change your mind at any time, by asking Claude or running the script yourself:
| Command | What it does |
|---|---|
python .coniso/coniso.py permissions |
Show what's allowed and what's missing |
python .coniso/coniso.py permissions --write |
Add the allow rules (and any needed env fix) |
python .coniso/coniso.py permissions --accept-edits |
Also make accept-edits the project's default mode, for unattended sprints. Always a separate opt-in |
python .coniso/coniso.py permissions --decline |
Stop asking |
python .coniso/coniso.py permissions --remove |
Remove everything Coniso added |
Natural language works too ("call a lead on P2-04", "run a sprint on phase 2").
The HTML prompt roadmap
The roadmap is a single self-contained HTML file per project. It needs no server and no internet, and you open it in any browser. It holds phases, small tickets, a copy-ready prompt per ticket, and a recommended model and effort per ticket.
- On the page: set statuses, tick done-when items and write notes. These stay in your browser.
- Copy prompt gives a fresh-session prompt with the project preamble included.
- Copy Coniso command gives
/coniso:lead <id>, or/coniso:director <phase>from a phase header. - Save updated file downloads the roadmap with your changes.
- Copy status for Claude gives a summary to paste into a session.
- Keep it current:
/coniso:roadmap nextshows what's next. Pasting status, or asking to "expand phase 2" or "revise tickets after we switched to Postgres", updates the file through the script. The script validates every write, merges browser and Claude edits without clobbering, and refuses to delete done tickets. - How sprints use it: the Director builds from it. After each wave,
roadmap-syncmoves merged tickets toreviewwithClaude:notes and bumps the revision. Tickets are never markeddonefor you. Clicking through and marking done stays yours.
Roadmap work needs no Coniso setup and works in non-git folders too.
Token usage and cost
Being straight about this:
- Coniso does not use fewer total tokens than doing the same work yourself in one session. A ticket costs one builder plus at least one reviewer, and leaders add auditors. Each agent reads the brief and its own assignment. That overhead is the price of independent review and isolated contexts.
- What it does is keep every context small and bounded. The main session doesn't grow with the work, so it doesn't pay to re-read hours of history on every turn, and late work isn't reasoned against the noise of early work. For long sessions on large codebases we expect this to be a net saving, though we haven't published measurements. For a ten-minute fix it isn't. Just ask Claude directly.
- It spends where it matters: haiku for mechanical packets, sonnet as the workhorse, opus only for load-bearing work and leadership. A ticket that fails twice moves up one model tier, and a third fail stops and asks you. S and M tickets run as one engineer plus one reviewer, with no team overhead.
- Parallelism multiplies spend rate. By default, a Director sprint can run up to ~20 subagents at once. That finishes sooner but burns your plan's usage or API budget faster.
- Levers:
/coniso:director … lighthalves concurrent builds and uses single reviewers.- Prefer
/coniso:leadfor single tickets over a full sprint. - When cost has to drop, Coniso cuts breadth (fewer concurrent units) before it ever cuts review.
- The main session stays lean by construction (v1.1):
- Compound commands.
dispatch,review,verdictandlandturn the Director's per-ticket bookkeeping (worktree, assignment file, plan validation, review setup, verdict rules, merge, roadmap sync) into a handful of script calls, chained with&&. A solo ticket now costs the Director about 5 tool calls instead of about 13. - Mechanical rules go to the script, not to auditors. Reviewers record their own verdicts with
verdict, which applies the ruling rules and asks a leader only when judgment is needed. Plans that are exactly the scheduled plan (MATCHES SCHEDULE) and lead hand-offs (validate-handoff) are checked without an auditor. Auditors still review every judgment call. - Quiet run. The Director writes nothing between tool calls. An optional output style makes that session-wide (below).
- Measured, not guessed. Each agent's reported token use is recorded per ticket (
--tokens), andretrototals it per ticket and per role. - Coordinators rotate. A fresh Review Lead every 3 review rounds, a fresh manager every 3 waves, and a restart point for the Director every 3 merged waves keep long-lived contexts short. All state is on disk.
- Compound commands.
- Small fixes get a small path. An XS ticket (
adhoc --size XS) is a patch: one engineer told to make the smallest change, then one light reviewer (coniso:reviewer-lite, sonnet at medium effort) with a budget sized to the diff. Every reviewer's budget is sized that way (12 tool calls under 60 changed lines, up to the full 40 or 60 above 300), so small tickets stop paying for a ceiling they never used. An XS diff that grows past 80 lines or 4 files is promoted to the normal review by the script, never downgraded. - Your test suite runs once per tree, not three times per ticket.
testreuses a passing run while the worktree is unchanged,landreuses it when the squash is byte-identical to the tree it passed on, and several passed tickets land as one batch with one integration run (a failure falls back to one at a time).--freshforces a rerun. - The Director can make a bounded quick fix. When a review or integration fail comes down to a few named lines (a seam between two tickets, a missed import),
quickfixlets the Director fix it in the ticket's worktree instead of resuming a builder. The script enforces the limit (20 changed lines in 2 files, one attempt), runs the checks, and sends the change to a delta review. It never merges unreviewed. - Auditors read a slice, not the sprint. Every validated plan comes with a
.ctx.mdof one line per ticket; that, not the ever-growingsprint.json, is the auditor's context. - Idle cost is small: about 600 tokens per session while installed, whether or not you use it. The compaction hook prints nothing outside an active sprint.
- Rule of thumb: use Coniso on a usage-based plan with headroom or an API budget you've set limits on. Watch your first sprint's usage before running unattended (
permissions --accept-edits).
Hooks and output style
- Compaction hook. Coniso ships one plugin hook (
hooks/hooks.json): onSessionStartwith matchercompact, it prints the open sprint board and the current wave, so a Director whose context was just compacted picks up from files instead of memory. In a project without an active sprint (.coniso/sprint.json) it prints nothing and exits 0. It runspython3,pythonorpy -3, whichever works, through Claude Code's hook shell (Git Bash on Windows). - Quiet output style (optional).
Coniso Quiet(output-styles/quiet.md) tells Claude to write nothing between tool calls and speak only for status lines, decisions you own, errors and final reports. It keeps Claude Code's coding instructions and is never forced on. Pick it in/config→ Output style for long sprints.
Commands
| Command | What it does |
|---|---|
/coniso:director [phase|ids|continue] [light|max] |
Full sprint |
/coniso:manager <phase|ids> |
One track |
/coniso:lead <ticket id | feature description> |
One ticket |
/coniso:review <ids | A..B range> |
Review round or sweep |
/coniso:engineer <task> |
One worker, no worktree |
/coniso:status |
Sprint board |
/coniso:roadmap [new <project> | next | change] |
Create or update the roadmap, or show what's next |
Always-on footprint: about 600 tokens per session (measured with claude plugin details coniso): one short skill description, one-line agent descriptions, and role commands that Claude can't auto-invoke. Each role's full procedure loads only when you call it.
Script reference (.coniso/coniso.py)
| Command | Purpose |
|---|---|
init [--stack <pack>|none], preflight |
Install or refresh; check git state, roadmap validity, nesting mode and permissions |
permissions [--write [--accept-edits] | --decline | --remove] |
Show, grant, decline or undo Coniso's entries in .claude/settings.local.json |
schedule [--phase P] [--tickets ids] [--limit N] [--add] [--formation managed|direct] |
Plan a sprint |
validate-plan <table> [--slots N] [--no-files] |
Check a delegation plan: one owner per file per step, complete assignment files, slot limits; MATCHES SCHEDULE when it is exactly the scheduled plan (no audit needed); writes <table>.ctx.md, the auditor's one-line-per-ticket context |
validate-handoff <id> |
Check a lead's hand-off: evidence per acceptance item, a passing test log, no unlisted [VERIFY]/TODO |
adhoc <id> --title … [--size XS|S|M|L] [--model] [--accept …] [--prompt-file] |
Add a non-roadmap ticket; XS is a patch (smallest change, light reviewer) |
status [id] [--json] [--open] [--field name], set <id> [<state>] [--note] [--verdict] [--model] [--tokens N --role R] |
Sprint state; --tokens records an agent's reported token use for retro |
wt add|path|remove <id> |
Worktrees on branch coniso/<id>, based on your current HEAD |
diff <id> / diff --range A..B, test <id|main> [--fresh] |
Diff and test output go to files; the console gets a summary. test reuses a passing run while the worktree's tree is unchanged |
sync <id> [--continue] |
Bring main into a ticket's worktree to resolve conflicts |
merge <id> |
Squash, integration test, commit; resets cleanly on conflict or failure |
dispatch <ids> [--specialty …] [--review lead|self] [--from U] [--plan name] [--rewrite] |
Worktree, complete assignment file and spawn line per ticket; a validated wave table when several |
review <ids> [--panel [ids]] [--delta] [--model opus] [--plan name] [--tokens N] |
Sync with main, measure the diff, reviewer assignments per review plan with a BUDGET sized to it (patch, batch and delta reviews go to reviewer-lite; an oversized patch is promoted), set reviewing, spawn lines |
verdict <id[,id]> --report <file> |
Record a reviewer verdict; prints RULED pass|fail when the rules settle it, NEEDS RULING: <reason> when a leader must |
land <ids> [--tokens N] [--each] [--fresh] |
Merge passed tickets in dependency order, several as one batch with one integration run (falls back to one at a time on failure); roadmap-sync once their wave is clear; flags a restart point every 3 waves |
quickfix <id> begin|done --note …|abort |
A bounded Director fix in a failed or passed ticket's worktree: sync and snapshot, then a size check (20 lines / 2 files), one check run, state built for a delta review; abort restores the builder's work |
ledger add|stats |
Auditor objection log |
brief-trim [--before YYYY-MM-DD] |
Move Decisions log rows older than the current sprint out of the brief, into .coniso/maps/decisions.md |
roadmap-sync, retro [--lessons], close |
Write back, report (tokens per ticket and role, oversized feedback files; --lessons prints only the last Lessons), archive |
roadmap new|show|next|validate|extract|write|set|log|upgrade |
Roadmap file tools (work without .coniso/) |
Stack packs
init --stack <name> installs a pack from the plugin's stacks/<name>/ folder. A pack can provide:
rules.md, added to the brief;specialties/*.md, extra engineer specialties;stack.json, with optionalcheck_cmd,setup_cmd,build_cmdandreview_lens;proving.md, a pass the Director runs after each wave.
{python} and {stack} in commands expand to the interpreter and the installed pack folder. Coniso ships no packs yet. The mechanism is there for your own. Contributions are welcome.
Guarantees and notes
- Coniso doesn't push. The script has no push command, and agents are told never to push. Sprint sync never marks roadmap tickets done, and merges refuse to run over uncommitted work rather than stashing or touching it.
- What it runs and touches: your build and test commands, git (worktrees, branches, squash merges on your current branch), and its own files under
.coniso/and.git/info/exclude. With your yes, it edits.claude/settings.local.json. Agents' own web lookups (scouts) go through Claude Code's tools. Coniso sends nothing anywhere itself. - The merge gate checks the integrated code. A ticket needs a passing review. Each merge then squashes it, runs your build and tests on the integrated result, and resets the branch untouched if anything fails or conflicts. Limits: with no build or test command set, preflight warns and the merge rests on review alone;
merge --forceand--no-testoverrides exist (--forceis reserved for your say-so);--no-worktreesmode has no merge gate; and it's a rule, not a lock, so an agent with shell access could still commit directly. - Worktrees live in
.coniso/wt/. If a tool in your repo scans dot-folders (some eslint or jest setups), add.conisoto its ignore list. - Leave the main checkout alone during a sprint: merges need it clean.
- Lessons loop: when you critique an agent's work, a one-line lesson goes to
docs/agent-feedback/<specialty>.md, and engineers read it before working.
Contributing and security
- Contributions: see CONTRIBUTING.md.
- Vulnerabilities: report privately per SECURITY.md. Please don't use public issues.
- Privacy: Coniso collects and sends nothing. See PRIVACY.md.
License
Apache License 2.0. See LICENSE and NOTICE.
Coniso is an independent project by Palatine Labs and is not affiliated with or endorsed by Anthropic. "Claude" and "Claude Code" are trademarks of Anthropic, PBC.
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi