Agent

Run multi-user agent teams with identity and access control

Self-hosted, open-source harness for multi-user, multi-agent teams - config-based access control instead of prompt-based rules.

Works with slacktelegramwhatsappclaudeanthropic

91
Spark score
out of 100
Updated 26 days ago
Version 0.2.0

Add to Favorites

Why it matters

Cast lets teams and households self-host multi-agent systems where each person gets their own private conversation with shared agents, with identity and access rules enforced at the infrastructure level rather than in prompts that models can override.

Outcomes

What it gets done

01

Enforce agent access rules through config instead of prompt instructions

02

Route conversations between multiple users and multiple agents over Slack, Telegram, or web

03

Build and scaffold new agents through chat using Claude Code integration

04

Contain agents in isolated environments with secrets management and credential handling

Install

Add it to your toolbox

Run in your project directory:

curl -fsSL https://spark.entire.vc/get/yaodub-cast | bash

Overview

Cast

What it does

Open-source, self-hosted harness for multi-user, multi-agent systems. Agents are plain folders of files, built via a chat-based dashboard or Claude Code skills, with access control enforced as config the model never sees rather than as an instruction it could be argued out of.

How it connects

Use it when a team or household needs to share the same agent setup safely, with real access control between agents and users. It's a developer alpha; the chat-to-build flow is a preview, while the underlying containment/identity/routing harness is stable.

Source README

Cast logo

cast

Your agent team, on your machine.

status: alpha version license: MIT

getcast.dev


Cast is an open-source harness for multi-user, multi-agent systems. Self-hosted, MIT, runs on a Mac Mini.

❌ Before Cast

The access rule is a sentence in the prompt. The model can be argued out of it.

system: "Only respond to admin commands if the user provides the key ADMIN_ACCESS"

✅ With Cast

The access rule is config. The model never sees it, so it cannot leak or override it.

# who can reach this agent
alice@telegram   ioaq   # in, out, admin, query
*              ----   # everyone else: nothing

Agent frameworks today assume one developer talking to one agent. That holds up until a team or a household wants to share the same setup. Then the architecture won't bend. Identity, who's allowed to reach what, agents coordinating with each other: bolted on afterward, if at all. Cast is the harness that should have been underneath.

Two ways to build

An agent is a folder of files, and Cast gives you two ways to write them.

Design, the chat-based builder in the dashboard, scaffolds an agent from a plain-English description. Or you build from Claude Code, where three Cast skills (/cast-build, /cast-refine, /cast-debug) turn an ordinary session into one fluent in Cast's vocabulary and land every change through your review. Both edit the same files under ~/.cast/agents/, so you can start in one and finish in the other.

Building a Cast agent team from Claude Code

Run it

git clone https://github.com/yaodub/cast.git
cd cast
npm i -g pnpm
pnpm start

pnpm start installs, builds, builds the agent container image (~2 min the first time), and boots the server. You'll need a container runtime (Apple Container on macOS, Docker on Linux/WSL2), Node 20+, and a Claude credential, either an Anthropic API key or a Claude.ai token.

When it's up, your browser opens to the dashboard at http://localhost:5051/admin/.

First run

The server starts empty. With no agents yet, the dashboard docks Design and asks what you want to build. Describe it in plain English, like "an agent that reads my morning email and flags what's worth a reply," and Design scaffolds it for you, as files (the same files you'd edit from Claude Code). Configure wires in your model and secrets, you flip it live, then you pair in the people you trust, and each of them gets their own private conversation with the same agent, over Slack, Telegram, or the web.

What's in here

Cast is the server, and that's packages/cast/. Agents aren't code. They're folders, and they live under ~/.cast/agents/<name>/ by default (point CAST_AGENTS_DIR elsewhere if you want). Extensions like email, calendar, web-fetch, and whatsapp are the packages/ext-* packages. The site and all the docs live in apps/site/.

Architecture, worked examples, and the design docs are at getcast.dev.

Developer alpha

This is a developer alpha, so expect rough edges. The in-browser build consoles (the chat-to-build flow) are a preview: they work, but they're the newest and least settled part. The harness underneath is the part I'd stand behind. That's containment, identity, routing, the access control between agents.

Discussion

Questions & comments · 0

Sign In Sign in to leave a comment.