Multi-agent, Multi-team, Multi-channel, 24/7 AI assistant
Run multiple teams of AI agents that collaborate with each other simultaneously with isolated workspaces.
<img src="https://img.shields.io/badge/stability-experimental-orange.svg" alt="Experimental" />
<a href="https://opensource.org/licenses/MIT">
<img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="MIT License" />
</a>
<a href="https://discord.gg/jH6AcEChuD">
<img src="https://img.shields.io/discord/1353722981163208785?logo=discord&logoColor=white&label=Discord&color=7289DA" alt="Discord" />
</a>
<a href="https://github.com/TinyAGI/tinyagi/releases/latest">
<img src="https://img.shields.io/github/v/release/TinyAGI/tinyagi?label=Latest&color=green" alt="Latest Release" />
</a>
We are actively looking for contributors. Please reach out.
curl -fsSL https://raw.githubusercontent.com/TinyAGI/tinyagi/main/scripts/install.sh | bash
This downloads and installs the tinyagi command globally. Then just run:
tinyagi
That's it. TinyAGI auto-creates default settings, starts the daemon, and opens TinyOffice in your browser. No wizard, no configuration needed.
~/tinyagi-workspacetinyagi (Anthropic/Opus)tinyagi channel setupDevelopment (run from source repo)
git clone https://github.com/TinyAGI/tinyagi.git
cd tinyagi && npm install && npm run build
npx tinyagi start
npx tinyagi agent list
Other installation methods
From Source:
git clone https://github.com/TinyAGI/tinyagi.git
cd tinyagi && npm install && ./scripts/install.sh
🐳 Docker
docker compose up -d
Set your API key in a .env file or pass it directly:
ANTHROPIC_API_KEY=sk-ant-... docker compose up -d
The API runs on http://localhost:3777. Data is persisted in a tinyagi-data Docker volume.
📱 Channel Setup Guides
@BotFather/newbot → Follow promptsAfter starting TinyAGI, scan the QR code:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
WhatsApp QR Code
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[QR CODE HERE]
📱 Settings → Linked Devices → Link a Device
TinyAGI includes a web portal for managing your agents, teams, tasks, and chat — all from the browser.

Once you start running TinyAGI locally, you can control it by visiting office.tinyagicompany.com. It connects to your local TinyAGI API at localhost:3777 — no account or sign-up needed.
Alternatively, you can run TinyOffice locally:
tinyagi office # Builds and starts on http://localhost:3000
TinyOffice Features & Setup
@agent, or @teamsettings.json) via UIStart TinyAGI first (API default: http://localhost:3777), then:
tinyagi office
This auto-detects when dependencies or builds are needed (e.g. after tinyagi update) and starts the production server on http://localhost:3000.
For development with hot-reload:
cd tinyoffice
npm install
npm run dev
If TinyAGI API is on a different host/port, set:
cd tinyoffice
echo 'NEXT_PUBLIC_API_URL=http://localhost:3777' > .env.local
Commands work with the tinyagi CLI.
| Command | Description | Example |
|---|---|---|
| (no command) | Install, configure defaults, start, and open TinyOffice | tinyagi |
start |
Start TinyAGI daemon | tinyagi start |
stop |
Stop all processes | tinyagi stop |
restart |
Restart TinyAGI | tinyagi restart |
status |
Show current status and activity | tinyagi status |
channel setup |
Configure channels interactively | tinyagi channel setup |
logs [type] |
View logs (discord/telegram/whatsapp/queue/heartbeat/all) | tinyagi logs queue |
| Command | Description | Example |
|---|---|---|
agent list |
List all configured agents | tinyagi agent list |
agent add |
Add new agent (interactive) | tinyagi agent add |
agent show <id> |
Show agent configuration | tinyagi agent show coder |
agent remove <id> |
Remove an agent | tinyagi agent remove coder |
agent reset <id> |
Reset agent conversation | tinyagi agent reset coder |
agent provider <id> [provider] |
Show or set agent's AI provider | tinyagi agent provider coder anthropic |
| `agent provider |
--model | Set agent's provider and model |tinyagi agent provider coder openai --model gpt-5.3-codex` |
| Command | Description | Example |
|---|---|---|
team list |
List all configured teams | tinyagi team list |
team add |
Add new team (interactive) | tinyagi team add |
team show <id> |
Show team configuration | tinyagi team show dev |
team remove <id> |
Remove a team | tinyagi team remove dev |
team add-agent <t> <a> |
Add an existing agent to a team | tinyagi team add-agent dev reviewer |
team remove-agent <t> <a> |
Remove an agent from a team | tinyagi team remove-agent dev reviewer |
team visualize [id] |
Live TUI dashboard for team chains | tinyagi team visualize dev |
| Command | Description | Example |
|---|---|---|
chatroom <team> |
Real-time TUI viewer with type-to-send | tinyagi chatroom dev |
office |
Start TinyOffice web portal on port 3000 | tinyagi office |
Every team has a persistent chat room. Agents post to it using [#team_id: message] tags, and messages are broadcast to all teammates. The chatroom viewer polls for new messages in real time — type a message and press Enter to post, or press q/Esc to quit.
API endpoints:
GET /api/chatroom/:teamId # Get messages (?limit=100&since=0)
POST /api/chatroom/:teamId # Post a message (body: { "message": "..." })
| Command | Description | Example |
|---|---|---|
provider [name] |
Show or switch global AI provider | tinyagi provider anthropic |
provider <name> --model <model> |
Switch provider and model; propagates to matching agents | tinyagi provider openai --model gpt-5.3-codex |
provider <name> --oauth-token <token> |
Store OAuth token for a built-in provider | tinyagi provider anthropic --oauth-token sk-ant-oat01-... |
provider list |
List all custom providers | tinyagi provider list |
provider add |
Add a new custom provider (interactive) | tinyagi provider add |
provider remove <id> |
Remove a custom provider | tinyagi provider remove proxy |
model [name] |
Show or switch AI model | tinyagi model opus |
Custom provider details
Custom providers let you use any OpenAI or Anthropic-compatible API endpoint (e.g., OpenRouter, proxy servers, self-hosted models).
Define a custom provider in settings.json:
{
"custom_providers": {
"my-proxy": {
"name": "My Proxy",
"harness": "claude",
"base_url": "https://proxy.example.com/v1",
"api_key": "sk-...",
"model": "claude-sonnet-4-6"
}
}
}
| Field | Required | Description |
|---|---|---|
name |
Yes | Human-readable display name |
harness |
Yes | CLI to use: claude or codex |
base_url |
Yes | API endpoint URL |
api_key |
Yes | API key for authentication |
model |
No | Default model name for CLI |
Assign a custom provider to an agent:
tinyagi agent provider coder custom:my-proxy
tinyagi agent provider coder custom:my-proxy --model gpt-4o
Auth token storage — store credentials for built-in providers so you don't need separate CLI auth:
tinyagi provider anthropic --oauth-token sk-ant-oat01-...
tinyagi provider anthropic --api-key sk-ant-...
tinyagi provider openai --api-key sk-...
Anthropic supports both oauth_token (exported as CLAUDE_CODE_OAUTH_TOKEN) and api_key (exported as ANTHROPIC_API_KEY). OAuth takes priority if both are set. OpenAI keys are saved as models.openai.api_key and exported as OPENAI_API_KEY. If nothing is configured, the process inherits environment variables directly.
API endpoints:
GET /api/custom-providers # List custom providers
PUT /api/custom-providers/:id # Create or update
DELETE /api/custom-providers/:id # Delete
See [docs/AGENTS.md](docs/AGENT
$ claude mcp add tinyagi \
-- python -m otcore.mcp_server <graph>