◆ shadok-ai
Star

open source · runs on your Claude subscription

Many Claude Codes.
One cockpit.
And it wrote itself.

Put an agent on a schedule with a check that runs without the model: prints nothing, nothing happened, zero tokens. Or drive them yourself, in parallel, each in its own git worktree.

$ npx shadok-ai

Node 20 or newer. It opens the cockpit in your browser, installs the claude CLI if you do not have it, and signs you in to your Claude account itself. No API key.

The first minute

Someone is already there

You do not arrive at an empty box. An agent is waiting in the directory you launched from, it has looked at what is in there, and it opens by naming what it actually found and offering one thing it can do with it. Recognised nothing? It says so plainly rather than inventing a stack it thinks you wanted to hear. It is an offer, not a wizard — ignore it and the cockpit is exactly as it was.

It does not stop at one

They start each other

An agent in the cockpit can open another one, hand it a task in its own worktree, and be told the moment it finishes — or the moment it stops, waiting on a question someone has to answer. Nothing sits polling, and a child that dies says so too. You review the work, not the plumbing. Most of what this page describes was built exactly that way — one agent at the keyboard, and the ones it started.

They stop redoing each other's work

Agents run siloed, so the second one to reach a problem fixes it again. The cockpit keeps one shared table of what has been settled — a bug closed, a decision taken, a job already run. An agent that resolves something writes a line, and every other agent is handed what changed before its next message, without asking for it. A new line on the same subject replaces the old one, so the table stays short enough to read — and for code, git stays the truth.

And when you are not at the desk

Answer them from your phone

Connect a Telegram group and every agent gets its own topic. Their questions arrive as buttons you tap, photos or files you send land in the agent's working directory, and what it produces comes back the same way — a file you can open without going near a laptop. It is not a copy or a notification feed — it is the same session your browser is watching, so an answer you tap on the train shows up on the screen you left open. Speak instead of typing and the voice note is transcribed on the machine shadok-ai runs on — not handed to a transcription service — and read back to you before it counts as what you said. Send a video and it is watched, not just filed: stills are pulled out of it for the agent to look at, and whatever is said in it is transcribed the same way, on the same machine.

Put an agent on a schedule

Give one a recurring prompt: every thirty minutes, or every morning at nine in the time zone you name. Attach a guard command and it runs without the model — if the guard has nothing to report, the agent is never woken and the run costs nothing at all. A watcher that stays quiet most of the day is free most of the day.

Fly it with more than one pilot

Several people can drive the same agent at the same time. Open it in another browser, on another machine, or from Telegram: everyone sees the same answers, the same questions, and each other's prompts as they are sent. One process, one transcript, as many pilots as you have. Put a password on the cockpit and each pilot gets a login of their own — an invitation link they set their own password on — so every prompt arrives with a name on it.

Keeping a fleet in line

Profiles
A name for a role and a leash: the system prompt an agent starts with, the model it runs, how hard it is told to think, the secrets it may see, and the commands it may not run. Forbid git commit and it cannot commit. Pick one when you start an agent, and change it on one already running — it restarts in place and keeps the conversation, so a wrong pick costs you nothing.
Tweak
Something about the cockpit itself bothers you? One click starts an agent in a clone of this repository with the room to change it. You describe the idea, watch it work, and read the whole diff before anything leaves your machine — it asks to connect your GitHub account only once there is something worth pushing, then opens the pull request from your own fork. And it stays with that pull request until it closes: it repairs a red build or a branch that has fallen behind, and tells you plainly when it cannot.
Secrets
Keys live in a vault outside your repository, never inside it. A profile names the ones its agents need and they arrive as environment variables when the agent starts. Send one from Telegram and the message carrying the value is deleted behind you. It goes both ways: an agent that logs into something itself can keep the credential there, so the next one does not start by authenticating all over again — and the value never passes through the transcript.
Pace
It watches how fast you are spending your five-hour and seven-day windows and holds a prompt back when you are running ahead of the pace that would use them evenly. Any message can push through when you mean it — it is a guardrail, not a wall.

It wrote itself

All of it is in the open, if you feel like checking: see for yourself.

Why it is called that

Les Shadoks pumped.

They were French cartoon birds drawn in 1968, and the entire joke was that they pumped — relentlessly, exhaustingly, and for no result anyone could ever identify. One of their mottos: the more it fails, the more likely it is to work.

An agent woken every hour to report that nothing happened is pumping. You pay a model call to be told there was nothing to do, and it will tell you that twenty-three more times today. This is the tool that lets it stop: the check runs without the model, so a quiet hour costs nothing at all.

Nowhere on this page said any of that until today. That was an oversight, not restraint.

Two Shadoks, round orange and yellow birds on thin legs, working
                a see-saw lever mounted on a small wheeled platform. Signed Rouxel.

Les Shadoks (1968) — drawn by Jacques Rouxel, produced by AAA for the ORTF. Reproduced here to explain the name; all rights remain with the rightsholders. The series is at ina.fr.