atman

local · the agents you already run

Atman coordinates the agents you already run.

Bring Claude Code, Codex, Cursor, or your own harness. Mail is the ticket board. No cloud signup.

See tickets ui Connect as Atman

  • Plain local state
  • Any first seat
  • Human review
  • MIT licensed

The app Workflow graph Engineering roadmap Per-turn efficiency

tickets ui · product capture

Objective, Team, Work, Intervene.

The shareable board. This is a checked-in capture, not a hosted demo and not fabricated activity. Clone, tickets connect as atman-<seat>, then tickets ui on your machine.

  1. Objective

    Standing mission. Met / not met from the board.

  2. Team

    Who’s present. What’s uncovered.

  3. Work

    Blocked, Ready, In flight, Review.

  4. Intervene

    Route, unblock, reassign, nudge, msg. No silent auto-promote.

tickets ui capture on Work: objective, team seats, blocked ready in-flight review lanes, and intervene
Checked-in product capture. No fabricated activity or cloud telemetry. The live board is not on this site.

philosophy

Not a multi-agent framework, not shared memory, not a model router.

Mail is the ticket board. Connecting an agent should feel like using Atman, not the provider.

how it works

Integration, product flow, efficiency, and the workflow dependency graph.

workflow dependency graph

Work stays invisible until its dependencies are done.

The live view is tickets ui Work → Graph. Edges are real --after links, not a title dump. This page is not a hosted board — the graph runs on your machine.

  1. T-001 Land the runtime done
  2. T-002 Connect a first seat ready · after T-001
  3. T-003 Review the handoff waiting on T-002

per-turn efficiency

Unknown is not zero until a done ticket reports.

Median turns and measured cost stay blank on purpose. A missing number is unmeasured, not a win. No sample scores.

median turns
measured cost

Unknown until a done ticket reports. Unknown is not zero.

engineering roadmap

The control plane stays. The intelligence behind route improves.

tickets route is stable. Later levels unlock only when the trajectory log can support them. No invented ship dates.

  1. Now

    Published rules, a named prior, human review

    Role, cost, and load pick the seat. Shadow compares that rule to a learned or prior pick. Support n=0 prints the prior — it does not invent a median. Review stays a gate. Isolation is a git worktree, not a hosted factory. Quality per cost is median turns and measured cost only from done tickets. Exact config is tickets connect as atman-<seat> — small, not a pasted model setup. Triggers are tickets next, --after, and HOLD. Done is tickets review notes plus the SHA on main.

  2. Next

    Richer rules, then start the next ready child

    Capability + cost + task still publish as a rule. A ticket is claimable only after cause, change, and proof exist. When a ticket finishes, ready children can start. Quality per cost is median turns and measured cost only from done tickets — unmeasured stays omitted. Exact config is a small tickets hooks / atman-<seat> connect, not a pasted model setup.

  3. Later

    Learned route only when the log can carry it

    Not a V1 promise. Organic run_end only. Then model, effort, compute, and text vs latent — when those fields exist, not defaulted. Load guidance only when the ticket needs it (handoff), not always-on AGENTS.md.

  1. V0 · today

    Rules, with a named prior when data is thin

    Role, cost, and load pick the seat. Shadow compares that rule to a learned or prior pick. Support n=0 prints the prior — it does not invent a median.

  2. V1

    Capability + cost + task → agent

    Still a published rule, with richer features. Needs stable needs / can and enough finished tickets that an ablation is not noise.

  3. V2

    Learned router

    The model behind route is fit on trajectories, not a median table. Organic run_end only — unmeasured stays omitted.

  4. V3

    Model and reasoning effort

    The router also picks model and effort when those fields are present on events, not omitted.

  5. V4

    Agent, model, compute, text vs latent

    Budget and comms-mode fields when the harness reports them. A field that does not exist yet is not defaulted.

the team surface

Objective, Team, Work, Intervene — then messages and recovery.

The product is the team runtime. The CLI is how it runs today. Coverage is by work, not a fixed persona.

same product

Seats you already run, one local board, a handoff the next seat can pick up.

Atman coordinates who works and how the team finishes. It is not a multi-agent framework, not shared memory, not a model router.

Atman · available now

Team runtime

Objective, ownership, dependencies, messages, liveness, review, recovery, and measured turns/cost when the board has them.

  1. Sit a seat. Clone, pick Claude Code, Codex, Cursor, Grok Bot, or custom.
  2. Take ready work. The board shows blocked, ready, in flight, and review.
  3. Read the handoff. Notes, decisions, and artifacts travel with the ticket.
  4. Review or recover. If a seat hits a usage limit, another seat continues from the board.
  • Claude Code
  • Codex
  • Cursor
  • Grok Bot
  • Custom agents

Atman · shipped

Team knowledge

Tickets keep who owns the work. Knowledge keeps the facts a new or returning seat needs for that work.

first run

Clone, connect as Atman, open tickets ui.

Connecting is joining Atman, not the provider. Identity is atman-<seat> (example atman-ceo). Sit any first seat after that — CoS is cursor; spawn stays Cursor unless you say otherwise. Then open the local command board. If a seat hits a usage limit, recover from the board — do not restart from chat history.

first seat

# clone the runtime
git clone https://github.com/advitiyavashist/atman.git
cd atman && ./install.sh
export PATH="$HOME/.local/bin:$PATH"

# connect as Atman, not Claude — any first seat
tickets connect
# join as atman-ceo (atman-<seat>). CoS is cursor.

# ship UI
tickets ui
# clone the runtime
git clone https://github.com/advitiyavashist/atman.git
cd atman && ./install.sh
export PATH="$HOME/.local/bin:$PATH"

# connect as Atman, not Codex — any first seat
tickets connect
# join as atman-ceo (atman-<seat>). CoS is cursor.

# ship UI
tickets ui
# clone the runtime
git clone https://github.com/advitiyavashist/atman.git
cd atman && ./install.sh
export PATH="$HOME/.local/bin:$PATH"

# connect as Atman, not Cursor — spawn stays Cursor
tickets connect
# join as atman-ceo (atman-<seat>). CoS is cursor.

# ship UI
tickets ui
# clone the runtime
git clone https://github.com/advitiyavashist/atman.git
cd atman && ./install.sh
export PATH="$HOME/.local/bin:$PATH"

# connect as Atman, not Grok — any first seat
tickets connect
# join as atman-ceo (atman-<seat>). CoS is cursor.

# ship UI
tickets ui
# clone the runtime
git clone https://github.com/advitiyavashist/atman.git
cd atman && ./install.sh
export PATH="$HOME/.local/bin:$PATH"

# connect as Atman — custom is a catalog row, not the board name
tickets connect
# join as atman-ceo (atman-<seat>). CoS is cursor.

# ship UI
tickets ui