Phantom by AshlrAI

Phantom · use cases

Every agent seat you already pay for, in one workbench.

Phantom drives the coding-agent CLIs and accounts you already use: Claude Code, Codex, Grok, Devin and local models. You sign in through each vendor's own tooling; Phantom keeps the chats, changes, checkpoints and usage readings in one place. Nothing here replaces the vendor CLI: each turn still spawns the real binary under the account you chose.

Your accounts, kept separate

One console. No shared session, no fixed roster.

Each seat is one account driven by its own CLI, pinned to a private profile so a turn never borrows another account's session or settings. Every claim below names the source it comes from.

A seat is an account plus its CLI

Each turn spawns one vendor CLI process (claude -p, codex exec, grok -p) in the project directory, streams normalized events and exits. The conversation is resumed by id, so its memory stays the vendor's own.

Source: docs/VERSE.md, “How a turn actually runs”

Profiles stay pinned per account

Phantom prepares a private profile directory per account and signs in through the vendor's own login, so two accounts at the same provider never share cookies, config or quota.

Source: docs/VERSE.md

No fixed seat cap

There is no plan tier limiting how many accounts you connect. Provider quotas and your hardware govern how much runs at once.

Source: docs/RESOURCE-POOLS.md

The console stays on loopback

phm verse binds to 127.0.0.1, prints a read token for the browser and asks for a separate mutation token before your first chat or other change.

Source: docs/QUICKSTART.md

Sandboxing matches the platform

Agent work is confined with sandbox-exec on macOS and bwrap or firejail on Linux; Windows uses per-account profile isolation and env-only isolation.

Source: docs/ARCHITECTURE.md

Usage readings keep their qualifiers

Account windows, resets and balances come from each provider's own report. Missing or unqualified evidence stays unknown rather than being guessed.

Source: docs/RESET-AWARE-SCHEDULING.md

The context meter reads the real window

Context windows and compaction points come from the pinned CLI binaries, each seat's own model catalog and the CLIs' reports at runtime, not a marketing table.

Source: docs/VERSE-CONTEXT.md

Devin is a separate seat with its own budget

The CLI seat defaults to Cognition SWE-2 High; cloud sessions are a separate ACU-capped path. The API key is asked for at a hidden prompt and stored in the macOS Keychain.

Source: docs/DEVIN.md, src/core/devin/types.ts

Defaults you can read in source

Lane budgets are constants, not promises.

Cloud and Devin defaults ship in the repository. They are settings you can change, not measurements of your usage.

Compiled defaults from the named source files. Settings, not measurements.
LaneDefault budgetConcurrencyDaily capReserve
Claude cloud sessions$250 credits total, ≈$3 per session4 at once20 sessions a day$40 self-improve reserve
Devin cloud sessions50 ACU total, 10 ACU per session2 at once30 ACU and 10 sessions a day10 ACU reserve

Sources: DEFAULT_CLOUD_BUDGET in src/core/cloud/types.ts, DEFAULT_DEVIN_BUDGET in src/core/devin/types.ts

Honest boundary: this page adds no signup, forms or tracking. Seats you do not configure stay absent, and an account whose usage cannot be read is ineligible for reset-aware autonomy rather than guessed.

Try it

Install, open the console, prepare one profile.

npm i -g @ashlr/phantom
phm verse
ashlr resources profile prepare --provider claude \
  --directory ~/.ashlr/native-profiles/claude-a \
  --executable /path/to/claude

Commands as documented: docs/QUICKSTART.md