CAST

Open source · MIT · version 0.1.0

A little 3D town where your AI coding agents live and work.

Claude, GPT, Gemini, DeepSeek, Grok, Qwen and many more live side by side here. Each project folder is a house, each agent a person in it, and workflows pass the work from one to the next: plan, build, review. What they do in the town is what they are doing on your files.

Claude GPT Gemini DeepSeek Grok, Qwen, Kimi & more
  • Linux & macOS (Windows via WSL 2)
  • Runs on the CAST engine
  • Mac app & Linux builds
  • Listens on 127.0.0.1
The town at golden hour, seen from above: apartment blocks and two small houses labelled todo-api and moonlight-novel along tree-lined streets, the Talent Agency at the back, and a toolbar with Place project, Drive, Fly to and Terminal.
Time of day Like the app: Auto follows your clock, or pin one.

Every model, every vendor

Every AI you know can move in.

Each person in CAST picks their own model. Bring the accounts you already have, the services you already pay for, or the models on your own machine, and they work side by side: in the same town, the same house, even the same team.

Model makers

  • Claude Anthropic
  • GPT OpenAI
  • Gemini Google
  • DeepSeek
  • Grok xAI
  • Llama Meta
  • Mistral
  • Qwen Alibaba
  • Kimi Moonshot
  • GLM Z.ai
  • MiniMax
  • MiMo Xiaomi

Through services you already use

  • OpenRouter
  • GitHub Copilot
  • Amazon Bedrock
  • Vertex AI
  • Azure OpenAI
  • Groq
  • Cerebras
  • Together AI
  • Fireworks
  • Hugging Face
  • NVIDIA

On your own machine

  • Ollama
  • LM Studio
  • llama.cpp
  • vLLM

…and dozens more providers the CAST engine knows. Claude, GPT, Gemini and DeepSeek wear their own colours in the town; everyone else wears grey.

One person, one model. Mix them freely.

  • Each person runs their own CAST engine process on the model on their card. Change it there, or with the model chip in the chat.
  • Mix vendors in one team. A Claude lead can hand work to a DeepSeek implementer and a GPT reviewer in the same house.
  • Never swapped behind your back. CAST never swaps a person's model for another vendor's.
  • Connect in the Talent Agency. Claude, ChatGPT and Google sign in from their cards; DeepSeek and OpenRouter take a key. Connect another account lists every other sign-in the CAST engine offers, and Model servers on your network adds llama.cpp, Ollama or LM Studio. How to connect →

CAST is tested with a few models per vendor. Once an account is connected, every model the engine offers through it is listed too.

A closer view inside a house: a person at a table, others at work around the room. Name tags show each person's role, and up close their model, such as Implementer on DeepSeek V4 Pro.
Name tags show each person's role and model.

Workflows

Describe the task once. The team passes it along.

A workflow is a team on the corkboard. Each step is a person on the model that suits it. Type the task, press Run, and the work moves from desk to desk until it is done. A review step can send it back for another pass.

  1. Step 1DecoderClaudeturns the task into a plan
  2. Step 2ImplementerDeepSeekwrites the code and the tests
  3. Step 3ReviewerGPTapproves, or sends it back

An example. You choose the steps and the model for each one. When a review says revise, the work goes back to an earlier step, and every step from there runs again.

A finished team run in the todo-api house. The progress bar at the top reads Decoder, Implementer, Reviewer, Completed. In the room a speech bubble says Handing off: Implementer's notes. The Workflow tab lists the run: Decoder on Claude Opus 5.5 wrote the plan, Implementer on DeepSeek V4 Pro implemented it, Reviewer on GPT-6.1 Sol requested changes.
One run, three vendors: Claude Opus 5.5 plans, DeepSeek V4 Pro builds, GPT-6.1 Sol reviews and asks for changes.

The lead puts the team together

Ask in chat and the lead brings in helpers and whole teams on its own. Or press Create with the Assistant in the Workflow tab and design one together.

See the plan before it runs

With Show me the plan first, a plan card shows who does what on which model and waits for Run. Prefer less asking? Pick Just go or Only when I ask.

Reviews that send work back

A review step judges the work before it. Approved, the run moves on. Not yet, and the work returns to an earlier step with the reviewer's notes.

Undo a whole run

Stop run aborts it. Revert files puts the folder back to the checkpoint taken before the run. Your branches, HEAD and staged changes are never touched.

Keep the good teams

Keep this team saves a run's team as a workflow of that house. Put in the library shares it, and any other house can import its own copy.

Leave it working

Set a goal… in a lead's chat keeps it working turn after turn until the goal is done or its token budget runs out. Pause, resume or drop it any time.

You stay in charge.

When someone needs your OK, they raise a hand, their house lights an amber beacon, and an approval card shows up. With the card focused, A approves and D denies. Approvals wait until you answer.

How often they ask is the permission mode, chosen under the message box.

A team run in progress: a progress bar at the top reads Decoder, Implementer, Reviewer. In the room, a speech bubble says Handing off: Implementer's notes, and the Reviewer has an exclamation mark. An approval card says Reviewer wants to use bash, shows the command and offers Approve, Allow for this session and Deny. The Workflow tab lists the run's steps with Waiting for your approval.
A run paused on the Reviewer's request to run a command.
Ask first
Asks before every edit and command.
Accept edits default
Edits files freely, asks before commands, running code and helpers.
Auto
Checks each step with rules and asks only about risky ones: sudo, deleting folders, git push, files outside the project, servers open to every network. A best-effort pattern check, not a sandbox: what the rules don't recognise runs without asking.
Bypass
Never asks. Only for folders you could lose, only from the menu, with a confirmation.

The map key

Your machine, drawn as a town.

Your workspace is the town, and every piece of real work has a place in it you can see.

An agent one CAST engine process per role
A person in the house, wearing their vendor's colour: Claude terracotta GPT mint DeepSeek blue Gemini violet
A project folder
A house on a lot. Pick an existing folder, or create a project from a template.
A job
A room in the house: a separate line of work in that folder, with its own people and chats. Add floors for more rooms, and the building grows taller.
A helper sub-agent
Walks in the front door, does chores while working, and leaves when done.
A prompt
Click a person and chat. They walk to a station and get to work.
A team (workflow)
The corkboard. Roles hand a folder to each other, on different models if you like.
git diff
The living-room TV. Click it for the full diff viewer.
Models and AI accounts
The Talent Agency building.

Inside a house

Watch the work, not a log file.

Click a house to walk in. Tool use becomes something a person does in the room, so you can tell at a glance who is reading, who is typing and who is waiting for you.

Inside the todo-api house, seen from above: a kitchen, bookshelves, a sofa facing the TV, desks and a dining table, with people labelled Decoder, Reviewer, Developer and Implementer. On the right, the side panel with jobs, chat, workflow, changes and inbox tabs and a chat with the Developer.
  • Bookshelf

    Reading files

  • Desk

    Editing: typing at a desk

  • Kitchen counter

    Shell commands

  • Phone on the sofa

    The web

  • Raised hand

    Waiting for you

Jobs are rooms. Floors are room to grow.

A job is a separate line of work in the same folder, with its own people, chats and team: say, one job writes the novel and another builds a website for it. Every house starts with one job, Main, in room 1A. The + by the elevator adds a floor with four more rooms, up to five floors.

In a git project a new job can work in its own copy of the files (a git worktree on its own branch), so jobs don't step on each other. Bring the copy's changes into the house when you are happy with them.

Entering a house opens the chat with its lead: the Assistant, Developer, Writer or Researcher, depending on the job. Chats survive a server restart.

The second floor of a house with its roof off: rooms 2A API docs, 2B Refactor and 2C each have their own people, Writer, Developer and Researcher, and room 2D says Available, click to start a job.
Floor 2 of a house: one job per room.

The TV shows what changed.

The Changes tab and the living-room TV show the project's git diff, side by side or line by line. Browse files opens a file viewer that also shows .html files as live, sandboxed pages.

Every house also has a real terminal docked at the bottom (Ctrl+`). It is your login shell, not an agent: nothing typed there goes to a model, and nothing is sandboxed.

The diff viewer titled Changes in todo-api on branch main, plus 55 minus 10 across 4 files, showing README.md and src/server.ts side by side with added and removed lines highlighted.
Click the TV for the full diff viewer.

No 3D required

Everything in the town also works from the keyboard.

Everything you can do in 3D can also be done from the 2D panels and the command palette. The Board lists every house instead of the 3D town: quicker on slow computers and easiest with a keyboard or screen reader. CAST remembers the choice, and a Board start never loads the 3D town. Without WebGL it still works on the Board.

  • Single-key shortcuts can be switched off for voice control, dictation or a screen reader; they start off on touch devices.
  • Screen reader support for the terminal, solid (non-see-through) panels, System, Dark or Light theme.
  • Text follows your browser's font-size setting.
Ctrl+K or ⌘KCommand palette
`Switch between the 3D town and the Board
?Help: the town's words and every shortcut
JSwitch jobs
PageUp PageDownSwitch floors
Alt+MCycle permission modes
A / DApprove or deny the focused card
DDrive a car around town (optional, never needed)

Cities, phones, a Mac app

Check on the town from wherever you are.

More than one machine? More than one city.

Each machine running CAST is a city with its own houses, agents and AI accounts. Pick one as your home and add the others to it from the city menu. Your browser only ever talks to the home machine, which forwards each city's pages, so phones and other devices need no extra pairing.

AI accounts are not shared: each city's agents run on that machine, with the accounts signed in there. Only add machines you control.

A city called Studio seen from above, with houses labelled web-app and field-notes, the Talent Agency, and a top bar showing 4 live, the 3D and Board switch, the quality setting and Ctrl K.
The city menu sits top left, before the house name.

On your phone, as an app.

On phones and tablets the side panel becomes a bottom sheet. CAST installs as a PWA: its own icon and window, a badge with the number of answers you owe, and notifications when someone needs you. Notifications say only who needs you and where, never commands, code or what was asked.

Reach your machine from your phone over Tailscale (tailscale serve, tailnet only), an SSH tunnel, or your LAN, and pair each device once.

CAST on a phone: the todo-api house from above with Decoder, Reviewer, Developer and Implementer name tags, floor buttons on the right, and a bottom bar with Ask, Workflow, TV, Files, Terminal and Exit.
CAST on a phone with the bottom sheet open on the todo-api house: tabs for Chat, Workflow, Changes and Inbox, the house's people, and the Reviewer's chat on GPT-6.1 Sol with suggested first messages.

A menu-bar app for the Mac.

On an Apple Silicon Mac (M1 or newer, macOS 13 or newer) CAST is one download. CAST.app lives in the menu bar, starts the server for you and shows how the town is doing: a plain icon when all is quiet, a dot while people work, an orange badge with a count when someone waits for you. It carries its own Bun and CAST engine, uses the Mac's git, and updates itself from its menu.

The app is signed with a Developer ID and notarized by Apple, so it opens like any other app. The Mac app in the install guide →

Download

Your town, on your own machine.

Free and open source. Take the download for your machine, or build it from source. On Windows, use WSL 2 with the Linux build. Run it as a normal user, never as root.

  • macOS

    Apple Silicon (M1 or newer), macOS 13 or newer

    CAST.app for the menu bar. It carries its own Bun and CAST engine.

    Download .dmg

    CAST-0.1.0-arm64.dmg

  • Linux x64

    64-bit Intel or AMD

    The CAST server in one file, with the CAST engine and the web app. No Bun needed.

    Download .tar.gz

    cast-0.1.0-linux-x64.tar.gz

Checksums and older versions are on the Releases page.

Or build it from source

On Linux or macOS, Intel Macs included, with Bun 1.3.14 or newer and git. The CAST engine comes with CAST and builds in the same step.

git clone https://github.com/JirapatWov/cast-town cast
cd cast
bun install
bun run build
bun run start

Then

  1. Pair your browser

    CAST lets in only browsers paired once with a secret link. The Mac app does it for you.

  2. Connect an AI account

    Sign in with Claude, ChatGPT or Google, paste a key, or add a model server.

  3. Place your first project

    Click a For sale lot and pick a folder, or start from a template.

Read the install guide

Read this before you open the door

It runs agents and a shell with your user's rights.

Whoever can open your CAST can do anything your account can do on that machine: read and change files, run any command, and spend money on the AI accounts signed in there. Treat access to it like an SSH login to your account.

  • Loopback only by default. It listens on 127.0.0.1:4860. Nothing on your network can reach it until you choose a way in.
  • Every browser is paired with a secret link. The link works like a password; paired devices can be revoked one by one.
  • Never expose it to the public internet. For other devices, prefer tailscale serve (never tailscale funnel) or an SSH tunnel.
  • Auto mode is not a sandbox. Its rules are a best-effort pattern check.
  • Found a vulnerability? Please don't open a public issue: use GitHub private vulnerability reporting on the repository's Security tab.

Read the full security policy

Young, open and in good company

Open source, under MIT.

The CAST engine

Every person in the town runs on the CAST engine (cast-agent): CAST's own fork of the open-source coding agent oh-my-pi. It ships with CAST and is pinned to the release CAST is tested with, so an upstream change can't break your town. MIT-licensed, © Mario Zechner, Can Bölük, Stencil Labs, Inc. Thanks to its authors.

Version 0.1

It is young. It is developed on Linux; macOS should work but is less tested. Windows is not supported (use WSL 2). Rendering is tuned for integrated GPUs on Medium; very old GPUs and phones need Low. Agents idle for 10 minutes are stopped (at most 10 run at once) and start again on your next message.

License and credits

CAST's code is MIT-licensed. It ships work by others under their own licences: Microsoft Rocketbox avatars, Quaternius animations, Poly Haven, ambientCG and Kenney assets, Khronos sample models, EZ-Tree, three.js and more, listed in THIRD-PARTY-NOTICES.md.