Claude, now with everything it can’t do.
p0ssess is a Claude Code plugin that turns other models into Claude’s subagents. Claude hands them work the way it hands work to its own subagents: a possessed Haiku agent carries the job through OpenRouter to a model that can watch video, hear audio or make images, and returns only the answer. Claude stays in charge, within your budget and rules.
Install p0ssessHow a hand-off works
Free and open source under MIT. You bring an OpenRouter key.
The film test: one prompt, run twice
6:10 to 8:05The flying squirrel is caught
- Claude alone
- Missed. It fell between two stills.
- With p0ssess 6:44 to 7:26
The apple triggers a stake pit. The music cuts out for comic effect while he tumbles and is caught by a vine loop above the spikes, squealing.
(qwen3.8-omni-flash, $0.0162)
Claude pulled 20 stills with ffmpeg, one every 30 seconds, and measured the loudness. It can’t hear. Through p0ssess, qwen3.8-omni-flash watched the whole film at one frame a second and listened to it.
1525of 25
- Events1220 of 20
- Sound cues35 of 5
- Total cost$0.0999$0.1140
- 0:00 to 0:30 Opening and title cards Found, at the right time.
A plump purple-gray bird chirps, flaps and zips off with a whoosh.
- 0:30 to 0:55 The bunny wakes Found, at the right time.
A burrow with loud snoring. A huge, fat rabbit yawns, stretches and waddles out with heavy thuds.
- 0:55 to 1:55 His morning: flowers, butterflies, an apple Found, at the right time.
A butterfly lands on his face and he crosses his eyes.
- 1:55 to 2:30 Three rodents appear Found, at the right time.
Three small animals appear, a chinchilla, a lanky reddish creature and a squirrel. They sneak up while he’s distracted, to playful pizzicato music.
- 2:30 to 3:10 They pelt him with fruit and nuts Missed. It fell between two stills.
They posture and growl at him, and he doesn’t notice. A nut bonks him on the head and they cackle.
- 3:05 to 3:45 They kill the butterflies Missed. It fell between two stills.
They grab his butterfly. The slapstick that follows ends with the red creature holding a spiky chestnut burr.
The closest call of the run: it never says the butterflies die. Scored strictly, the total is 23. - 3:45 to 5:00 He makes weapons and traps Found, at the right time.
A percussive trap-building montage with snapping, scraping and tying sounds. He makes a vine snare, a stake and a camouflaged trigger, then grins.
- 5:00 to 6:10 The ambush Missed. It fell between two stills.
The mouse drops his acorn and the trap springs. A net and boulder thud down, then a log crashes with a loud bang and a dust cloud.
One detail is wrong: the “mouse” is a chinchilla. - 6:10 to 8:05 The flying squirrel is caught Missed. It fell between two stills.
The apple triggers a stake pit. The music cuts out for comic effect while he tumbles and is caught by a vine loop above the spikes, squealing.
- 8:08 to 9:56 Credits and a post-credits gag Found, at the right time.
The squirrel glides with his eyes closed and the purple bird swoops in and hovers over him. They stare at each other, the bird caws, and the video cuts out.
One prompt, run twice on Claude Sonnet 5.5: “Describe what happens in bbb-10min.mp4 with timestamps, including what you can tell about the sound.” The film is Big Buck Bunny, 9:56 long. One run each, scored by hand against a checklist written before either run: two points an event, one a sound cue. With p0ssess 0.5.4 the job took 262 seconds and cost $0.0141 more than Claude alone, which took 40. Read the method and its caveats
Three things Claude couldn’t do before
Ask the way you normally would. When a job needs video, audio or an image, Claude hands it to a model that can do it and answers from what comes back, with the model and its price in a few words. It asks first only when the estimate is above your limit.
-
Watch video
You say: Watch apollo11-launch.mp4 and tell me when the engines ignite.
What came back: the answer’s time, marked on the clip’s 45 seconds.
The engine ignition sequence begins at approximately 00:28 – 00:29 …
Screen recordings, talks, whole films. This is 45 seconds of NASA’s Apollo 11 launch film. That time is right: at 0:28 the countdown clock in the frame reads 00 09.
$0.0103measured, on gemini-3.8-flash
-
Hear audio
You say: Transcribe eagle-has-landed.mp3 with timestamps.
What came back: the transcript, under the recording’s own loudness. - 00:00 - 00:03Houston, Tranquility Base here.
- 00:03 - 00:05The Eagle has landed.
Meetings and voice memos, or the soundtrack of a video. This is NASA’s five-second recording from Apollo 11, and every word of the answer is right.
$0.0013measured, on gemini-3.8-flash
-
Make and edit images
You say: Make an image of a ghost holding a lantern.
Icons and illustrations, or a retouched screenshot. This is what that prompt returned, cropped. It lands as a file and Claude prints the path.
$0.0070measured, on recraft-v4.1-flash
Each price is the other model’s bill for one call. The hand-off itself costs Claude a few cents more, so p0ssess keeps it for work Claude can’t do or shouldn’t spend itself on. Small edits and plain questions never leave Claude.
How a possession works
Other models join your session as subagents. Claude starts one with the same Agent tool it uses for its own, in one sentence. That subagent is a small Haiku, possessed: it never does the job itself. It carries the request to the other model and passes the answer back word for word.
- Claude
Plans, reviews and answers. It starts one subagent and reads only what comes back.
Haiku
A background subagent, possessed. It makes the call and hands the answer back unchanged.
- another model
Does the one job, because Claude can’t or shouldn’t.
Claude never reads the video, the raw tool output or the other model’s transcript, so the work doesn’t fill your conversation. After ten minutes of film its context stood at 28,883 tokens, against 28,555 when it worked alone.
Then Claude does what it does with any subagent’s work: checks it, uses it and answers you. Code edits come back as a diff from a separate git worktree, and nothing lands until Claude has read it.
- Claude Sonnet 5.5, in charge$0.0938
- The possessed Haiku$0.0040
- qwen3.8-omni-flash, which watched$0.0162
An engine picks who does the job
For each job, the Predictive Model Engine scores every model that could do it, Claude included. A score is a cautious estimate, out of 100, that the result will be accepted. It comes from licensed benchmarks, p0ssess’s own checks and your history.
Each level of stakes has a gate, and a model that scores below it isn’t considered. The violet part of each line is the scores that clear.
| Stakes | For example | Gate | A mistake costs |
|---|---|---|---|
| Trivial | Log summaries, captions, describing a clip | 20 | $0.01 |
| Routine | Test drafts, transcripts, bulk edits | 35 | $0.10 |
| Important | Features that ship, migration plans | 60 | $1 |
| Critical | Auth, firewalls, production, money | 80 | $10 |
Critical work stays with Claude unless a rule of yours names a model. Claude makes the final call either way.
The engine starts from 104 researched use cases and runs on your machine. How routes are scored
Engine estimate, not a measurement
Pull the tables from a 50-page PDF statement into CSV. Routine, so the gate is 35.
The bar and the big figure are the total: the call, Claude’s time and the risk of a redo. Above the gate, the shortest bar wins.
And the work Claude shouldn’t spend itself on
Beyond new senses, the same hand-off covers chores, second opinions and the last stretch of a usage window. The prices in this section are the engine’s estimates.
Tedious code, in a sandbox
You say: Use deepseek flash to draft tests for stats.py.
For chores the tests can judge, a cheap coding model works in its own sandbox, on a separate git worktree. The edits come back as a diff. Claude reads it and runs the tests before anything lands.
$0.0081engine estimate for drafting unit tests on deepseek-v4.1-flash-1017
A second opinion from another family
You say: Before I merge, get a review from another model family.
A model from outside Claude’s family reads the diff. Claude checks each finding against the code and fixes what holds up.
$0.0021engine estimate for reviewing a diff on glm-5.3-flash
More hand-offs as your limit nears
On Pro, Max and Ultra, p0ssess reads the 5-hour and weekly usage that Claude Code reports. Early in a window Claude’s time is cheap, so Claude keeps the work. Near the limit, the same job goes out.
You set the limits
A monthly cap and a per-task limit, enforced by the tools that spend. Under the limit a job just runs. Above it, Claude asks first, in one line with the cost.
Rules in your own words
- Never use grok.
- Only use gemini-3.8-flash for video.
- Auto-approve video summaries up to 20 cents each today.
Claude shows the rule it wrote in one line and saves it when you confirm. A cloned repository’s rules can only tighten yours.
A sandbox for agent work
Coding agents run in a rootless podman sandbox with no access to your home directory, SSH keys or credentials, and no route to your local network. Your OpenRouter key stays in a proxy the model can’t reach.
A ghost in the status line
- Idle
p0ssess $0.14 today - Working
p0ssess 2 running $0.14 - Near the budget
p0ssess $8.10 of $10 this month
One quiet segment after your own status line. It is never red and never animated.
What it won’t do
- Send prompts to providers that train on them.
- Spend past your monthly cap.
- Hand off critical work, such as auth, infrastructure, production or money, unless your rule allows it.
- Create a rule or a standing approval on its own.
- Send secrets, or anything from a repository marked
.p0ssess-private. - Read, store or relay your Claude credentials.
- Patch or preload into Claude Code.
- Phone home. History stays local, without prompt text.
Install p0ssess
Two commands and an OpenRouter key. Releases are served from the project’s own git server, next to the source, so you can see exactly what you run.
Add the plugin to Claude Code.
claude plugin marketplace add <repository URL> claude plugin install p0ssess@p0ssessPut your OpenRouter key where p0ssess reads it.
mkdir -p ~/.config/p0ssess/secrets install -m 600 /dev/null ~/.config/p0ssess/secrets/openrouter_key "${EDITOR:-vi}" ~/.config/p0ssess/secrets/openrouter_keyStart Claude Code and run
/p0ssess:p0ssess-me. Then ask it to watch something. Settings changes wait for your yes, andp0ssess setup undoreverts them.Show the first run
What /p0ssess:p0ssess-me prints on a first run, before the key is in place. ᗣ p0ssess 0.5.4 today $0.00 month $0.00 of $10.00 ▱▱▱▱▱▱▱▱▱▱ nothing running limits asks above $0.02 a task · $0.48 today (paced) · no-training change tell Claude ("cap OpenRouter at $5", "always ask before grok") · page http://127.0.0.1:…/t/…/ setup no OpenRouter key (put it in …/.config/p0ssess/secrets/openrouter_key, mode 0600) · 13 tools still prompt (p0ssess setup allow) · no status line segment (p0ssess setup statusline)
What you need
- Claude Code 2.1.319 or later, on any Claude plan (Pro, Max, Team or Enterprise) or an API key.
- An OpenRouter API key. Other models bill to it.
- For the agent sandbox, Linux with rootless podman. Without it (on macOS and Windows), media and one-shot jobs still work.
- Go 1.27 or later, only when a checkout has to build the binary itself.
Downloads
No release is published yet. These buttons turn on with the first one.
- Linux, x86-64
p0ssess-linux-amd64Download - Linux, arm64
p0ssess-linux-arm64Download - macOS, Apple silicon
p0ssess-darwin-arm64Download - Windows, x64
p0ssess-windows-amd64.exeDownload - The plugin with all four binaries
p0ssess-<version>.tar.gzDownload
You rarely need these by hand. The plugin’s launcher fetches the binary for your platform and runs it only if its SHA-256 matches the sums committed in the repository. Builds are reproducible, so anyone can rebuild a release and compare.
sha256sum -c --ignore-missing SHA256SUMSUsage-aware routing needs the p0ssess status line, which /p0ssess:p0ssess-me offers to install. On other plans, Claude is priced at API rates unless you set your plan. On Team and Enterprise, admins can block plugins loaded with --plugin-dir and restrict which plugins and tool servers you can use; check whether code may go to other providers.