[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-74813":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":27,"readmeContent":28,"aiSummary":29,"trendingCount":16,"starSnapshotCount":16,"syncStatus":30,"lastSyncTime":31,"discoverSource":32},74813,"tinyagi","TinyAGI\u002Ftinyagi","TinyAGI","TinyAGI is the agent teams orchestrator for One Person Company. (fka TinyClaw)","https:\u002F\u002Foffice.tinyagicompany.com\u002F",null,"TypeScript",3575,505,20,33,0,4,5,17,12,72.31,"MIT License",false,"main",true,[],"2026-06-12 04:01:15","\u003Cdiv align=\"center\">\n  \u003Cimg src=\".\u002Fdocs\u002Fimages\u002Ftinyagi.png\" alt=\"TinyAGI\" width=\"600\" \u002F>\n  \u003Ch1>TinyAGI 🦞\u003C\u002Fh1>\n  \u003Cp>\u003Cstrong>Multi-agent, Multi-team, Multi-channel, 24\u002F7 AI assistant\u003C\u002Fstrong>\u003C\u002Fp>\n  \u003Cp>Run multiple teams of AI agents that collaborate with each other simultaneously with isolated workspaces.\u003C\u002Fp>\n  \u003Cp>\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstability-experimental-orange.svg\" alt=\"Experimental\" \u002F>\n    \u003Ca href=\"https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT\">\n      \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-blue.svg\" alt=\"MIT License\" \u002F>\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002FjH6AcEChuD\">\n      \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F1353722981163208785?logo=discord&logoColor=white&label=Discord&color=7289DA\" alt=\"Discord\" \u002F>\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FTinyAGI\u002Ftinyagi\u002Freleases\u002Flatest\">\n      \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002FTinyAGI\u002Ftinyagi?label=Latest&color=green\" alt=\"Latest Release\" \u002F>\n    \u003C\u002Fa>\n  \u003C\u002Fp>\n\u003C\u002Fdiv>\n\n\u003Cdiv align=\"center\">\n  \u003Cvideo src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fc5ef5d3c-d9cf-4a00-b619-c31e4380df2e\" width=\"600\" controls>\u003C\u002Fvideo>\n\u003C\u002Fdiv>\n\n## ✨ Features\n\n- ✅ **Multi-agent** - Run multiple isolated AI agents with specialized roles\n- ✅ **Multi-team collaboration** - Agents hand off work to teammates via chain execution and fan-out\n- ✅ **Multi-channel** - Discord, WhatsApp, and Telegram\n- ✅ **Web portal (TinyOffice)** - Browser-based dashboard for chat, agents, teams, tasks, logs, and settings\n- ✅ **Team chat rooms** - Persistent async chat rooms per team with real-time CLI viewer\n- ✅ **Multiple AI providers** - Anthropic Claude, OpenAI Codex, and custom providers (any OpenAI\u002FAnthropic-compatible endpoint)\n- ✅ **Auth token management** - Store API keys per provider, no separate CLI auth needed\n- ✅ **Parallel processing** - Agents process messages concurrently\n- ✅ **Live TUI dashboard** - Real-time team visualizer and chatroom viewer\n- ✅ **Persistent sessions** - Conversation context maintained across restarts\n- ✅ **SQLite queue** - Atomic transactions, retry logic, dead-letter management\n- ✅ **Plugin system** - Extend TinyAGI with custom plugins for message hooks and event listeners\n- ✅ **24\u002F7 operation** - Runs as a background process or Docker container\n\n## Community\n\n[Discord](https:\u002F\u002Fdiscord.com\u002Finvite\u002FjH6AcEChuD)\n\nWe are actively looking for contributors. Please reach out.\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n- macOS, Linux and Windows (WSL2)\n- Node.js v18+\n- [Claude Code CLI](https:\u002F\u002Fclaude.com\u002Fclaude-code) (for Anthropic provider)\n- [Codex CLI](https:\u002F\u002Fdocs.openai.com\u002Fcodex) (for OpenAI provider)\n\n### Installation & First Run\n\n```bash\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002FTinyAGI\u002Ftinyagi\u002Fmain\u002Fscripts\u002Finstall.sh | bash\n```\n\nThis downloads and installs the `tinyagi` command globally. Then just run:\n\n```bash\ntinyagi\n```\n\nThat's it. TinyAGI auto-creates default settings, starts the daemon, and opens TinyOffice in your browser. No wizard, no configuration needed.\n\n- **Default workspace:** `~\u002Ftinyagi-workspace`\n- **Default agent:** `tinyagi` (Anthropic\u002FOpus)\n- **Channels:** none initially — add later with `tinyagi channel setup`\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Development (run from source repo)\u003C\u002Fb>\u003C\u002Fsummary>\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FTinyAGI\u002Ftinyagi.git\ncd tinyagi && npm install && npm run build\nnpx tinyagi start\nnpx tinyagi agent list\n```\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Other installation methods\u003C\u002Fb>\u003C\u002Fsummary>\n\n**From Source:**\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FTinyAGI\u002Ftinyagi.git\ncd tinyagi && npm install && .\u002Fscripts\u002Finstall.sh\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>🐳 Docker\u003C\u002Fb>\u003C\u002Fsummary>\n\n```bash\ndocker compose up -d\n```\n\nSet your API key in a `.env` file or pass it directly:\n\n```bash\nANTHROPIC_API_KEY=sk-ant-... docker compose up -d\n```\n\nThe API runs on `http:\u002F\u002Flocalhost:3777`. Data is persisted in a `tinyagi-data` Docker volume.\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>📱 Channel Setup Guides\u003C\u002Fb>\u003C\u002Fsummary>\n\n### Discord Setup\n\n1. Go to [Discord Developer Portal](https:\u002F\u002Fdiscord.com\u002Fdevelopers\u002Fapplications)\n2. Create application → Bot section → Create bot\n3. Copy bot token\n4. Enable \"Message Content Intent\"\n5. Invite bot using OAuth2 URL Generator\n\n### Telegram Setup\n\n1. Open Telegram → Search `@BotFather`\n2. Send `\u002Fnewbot` → Follow prompts\n3. Copy bot token\n4. Start chat with your bot\n\n### WhatsApp Setup\n\nAfter starting TinyAGI, scan the QR code:\n\n```text\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n     WhatsApp QR Code\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n[QR CODE HERE]\n\n📱 Settings → Linked Devices → Link a Device\n```\n\n\u003C\u002Fdetails>\n\n---\n\n## 🌐 TinyOffice Web Portal\n\nTinyAGI includes a web portal for managing your agents, teams, tasks, and chat — all from the browser.\n\n\u003Cdiv align=\"center\">\n  \u003Cimg src=\".\u002Fdocs\u002Fimages\u002Ftinyoffice.png\" alt=\"TinyOffice Office View\" width=\"700\" \u002F>\n\u003C\u002Fdiv>\n\nOnce you start running TinyAGI locally, you can control it by visiting **[office.tinyagicompany.com](https:\u002F\u002Foffice.tinyagicompany.com\u002F)**. It connects to your local TinyAGI API at `localhost:3777` — no account or sign-up needed.\n\nAlternatively, you can run TinyOffice locally:\n\n```bash\ntinyagi office  # Builds and starts on http:\u002F\u002Flocalhost:3000\n```\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>TinyOffice Features & Setup\u003C\u002Fb>\u003C\u002Fsummary>\n\n- **Dashboard** - Real-time queue\u002Fsystem overview and live event feed\n- **Chat Console** - Send messages to default agent, `@agent`, or `@team`\n- **Agents & Teams** - Create, edit, and remove agents\u002Fteams\n- **Tasks (Kanban)** - Create tasks, drag across stages, assign to agent\u002Fteam\n- **Logs & Events** - Inspect queue logs and streaming events\n- **Settings** - Edit TinyAGI configuration (`settings.json`) via UI\n- **Office View** - Visual simulation of agent interactions\n- **Org Chart** - Hierarchical visualization of teams and agents\n- **Chat Rooms** - Slack-style persistent chat rooms per team\n- **Projects** - Project-level task management with filtered kanban boards\n\n### Running Locally\n\nStart TinyAGI first (API default: `http:\u002F\u002Flocalhost:3777`), then:\n\n```bash\ntinyagi office\n```\n\nThis auto-detects when dependencies or builds are needed (e.g. after `tinyagi update`) and starts the production server on `http:\u002F\u002Flocalhost:3000`.\n\nFor development with hot-reload:\n\n```bash\ncd tinyoffice\nnpm install\nnpm run dev\n```\n\nIf TinyAGI API is on a different host\u002Fport, set:\n\n```bash\ncd tinyoffice\necho 'NEXT_PUBLIC_API_URL=http:\u002F\u002Flocalhost:3777' > .env.local\n```\n\n\u003C\u002Fdetails>\n\n## 📋 Commands\n\nCommands work with the `tinyagi` CLI.\n\n### Core Commands\n\n| Command       | Description                                               | Example               |\n| ------------- | --------------------------------------------------------- | --------------------- |\n| *(no command)* | Install, configure defaults, start, and open TinyOffice  | `tinyagi`            |\n| `start`       | Start TinyAGI daemon                                     | `tinyagi start`      |\n| `stop`        | Stop all processes                                        | `tinyagi stop`       |\n| `restart`     | Restart TinyAGI                                          | `tinyagi restart`    |\n| `status`      | Show current status and activity                          | `tinyagi status`     |\n| `channel setup` | Configure channels interactively                        | `tinyagi channel setup` |\n| `logs [type]` | View logs (discord\u002Ftelegram\u002Fwhatsapp\u002Fqueue\u002Fheartbeat\u002Fall) | `tinyagi logs queue` |\n\n### Agent Commands\n\n| Command                               | Description                     | Example                                                      |\n| ------------------------------------- | ------------------------------- | ------------------------------------------------------------ |\n| `agent list`                          | List all configured agents      | `tinyagi agent list`                                        |\n| `agent add`                           | Add new agent (interactive)     | `tinyagi agent add`                                         |\n| `agent show \u003Cid>`                     | Show agent configuration        | `tinyagi agent show coder`                                  |\n| `agent remove \u003Cid>`                   | Remove an agent                 | `tinyagi agent remove coder`                                |\n| `agent reset \u003Cid>`                    | Reset agent conversation        | `tinyagi agent reset coder`                                 |\n| `agent provider \u003Cid> [provider]`      | Show or set agent's AI provider | `tinyagi agent provider coder anthropic`                    |\n| `agent provider \u003Cid> \u003Cp> --model \u003Cm>` | Set agent's provider and model  | `tinyagi agent provider coder openai --model gpt-5.3-codex` |\n\n### Team Commands\n\n| Command                     | Description                        | Example                                   |\n| --------------------------- | ---------------------------------- | ----------------------------------------- |\n| `team list`                 | List all configured teams          | `tinyagi team list`                      |\n| `team add`                  | Add new team (interactive)         | `tinyagi team add`                       |\n| `team show \u003Cid>`            | Show team configuration            | `tinyagi team show dev`                  |\n| `team remove \u003Cid>`          | Remove a team                      | `tinyagi team remove dev`                |\n| `team add-agent \u003Ct> \u003Ca>`    | Add an existing agent to a team    | `tinyagi team add-agent dev reviewer`    |\n| `team remove-agent \u003Ct> \u003Ca>` | Remove an agent from a team        | `tinyagi team remove-agent dev reviewer` |\n| `team visualize [id]`       | Live TUI dashboard for team chains | `tinyagi team visualize dev`             |\n\n### Chatroom Commands\n\n| Command             | Description                                   | Example                    |\n| ------------------- | --------------------------------------------- | -------------------------- |\n| `chatroom \u003Cteam>`   | Real-time TUI viewer with type-to-send        | `tinyagi chatroom dev`    |\n| `office`            | Start TinyOffice web portal on port 3000      | `tinyagi office`          |\n\nEvery 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`\u002FEsc to quit.\n\n**API endpoints:**\n\n```\nGET  \u002Fapi\u002Fchatroom\u002F:teamId          # Get messages (?limit=100&since=0)\nPOST \u002Fapi\u002Fchatroom\u002F:teamId          # Post a message (body: { \"message\": \"...\" })\n```\n\n### Provider & Custom Provider Commands\n\n| Command                                       | Description                                              | Example                                          |\n| --------------------------------------------- | -------------------------------------------------------- | ------------------------------------------------ |\n| `provider [name]`                             | Show or switch global AI provider                        | `tinyagi provider anthropic`                    |\n| `provider \u003Cname> --model \u003Cmodel>`             | Switch provider and model; propagates to matching agents | `tinyagi provider openai --model gpt-5.3-codex` |\n| `provider \u003Cname> --oauth-token \u003Ctoken>`        | Store OAuth token for a built-in provider                | `tinyagi provider anthropic --oauth-token sk-ant-oat01-...` |\n| `provider list`                               | List all custom providers                                | `tinyagi provider list`                         |\n| `provider add`                                | Add a new custom provider (interactive)                  | `tinyagi provider add`                          |\n| `provider remove \u003Cid>`                        | Remove a custom provider                                 | `tinyagi provider remove proxy`                 |\n| `model [name]`                                | Show or switch AI model                                  | `tinyagi model opus`                            |\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Custom provider details\u003C\u002Fb>\u003C\u002Fsummary>\n\nCustom providers let you use any OpenAI or Anthropic-compatible API endpoint (e.g., OpenRouter, proxy servers, self-hosted models).\n\n**Define a custom provider in `settings.json`:**\n\n```json\n{\n  \"custom_providers\": {\n    \"my-proxy\": {\n      \"name\": \"My Proxy\",\n      \"harness\": \"claude\",\n      \"base_url\": \"https:\u002F\u002Fproxy.example.com\u002Fv1\",\n      \"api_key\": \"sk-...\",\n      \"model\": \"claude-sonnet-4-6\"\n    }\n  }\n}\n```\n\n| Field      | Required | Description                          |\n| ---------- | -------- | ------------------------------------ |\n| `name`     | Yes      | Human-readable display name          |\n| `harness`  | Yes      | CLI to use: `claude` or `codex`      |\n| `base_url` | Yes      | API endpoint URL                     |\n| `api_key`  | Yes      | API key for authentication           |\n| `model`    | No       | Default model name for CLI           |\n\n**Assign a custom provider to an agent:**\n\n```bash\ntinyagi agent provider coder custom:my-proxy\ntinyagi agent provider coder custom:my-proxy --model gpt-4o\n```\n\n**Auth token storage** — store credentials for built-in providers so you don't need separate CLI auth:\n\n```bash\ntinyagi provider anthropic --oauth-token sk-ant-oat01-...\ntinyagi provider anthropic --api-key sk-ant-...\ntinyagi provider openai --api-key sk-...\n```\n\nAnthropic 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.\n\n**API endpoints:**\n\n```\nGET    \u002Fapi\u002Fcustom-providers              # List custom providers\nPUT    \u002Fapi\u002Fcustom-providers\u002F:id          # Create or update\nDELETE \u002Fapi\u002Fcustom-providers\u002F:id          # Delete\n```\n\nSee [docs\u002FAGENTS.md](docs\u002FAGENTS.md#custom-providers) for more details.\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Pairing commands\u003C\u002Fb>\u003C\u002Fsummary>\n\nUse sender pairing to control who can message your agents.\n\n| Command                                | Description                                        | Example                                    |\n| -------------------------------------- | -------------------------------------------------- | ------------------------------------------ |\n| `pairing pending`                      | Show pending sender approvals (with pairing codes) | `tinyagi pairing pending`                 |\n| `pairing approved`                     | Show approved senders                              | `tinyagi pairing approved`                |\n| `pairing list`                         | Show both pending and approved senders             | `tinyagi pairing list`                    |\n| `pairing approve \u003Ccode>`               | Move a sender from pending to approved by code     | `tinyagi pairing approve ABCD1234`        |\n| `pairing unpair \u003Cchannel> \u003Csender_id>` | Remove an approved sender from the allowlist       | `tinyagi pairing unpair telegram 1234567` |\n\nPairing behavior:\n\n- First message from unknown sender: TinyAGI generates a code and sends approval instructions.\n- Additional messages while still pending: TinyAGI blocks silently (no repeated pairing message).\n- After approval: messages from that sender are processed normally.\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Messaging & in-chat commands\u003C\u002Fb>\u003C\u002Fsummary>\n\n| Command          | Description                 | Example                          |\n| ---------------- | --------------------------- | -------------------------------- |\n| `send \u003Cmessage>` | Send message to AI manually | `tinyagi send \"Hello!\"`         |\n| `send \u003Cmessage>` | Route to specific agent     | `tinyagi send \"@coder fix bug\"` |\n\nThese commands work in Discord, Telegram, and WhatsApp:\n\n| Command             | Description                          | Example                 |\n| ------------------- | ------------------------------------ | ----------------------- |\n| `@agent_id message` | Route message to specific agent      | `@coder fix the bug`    |\n| `@team_id message`  | Route message to team leader         | `@dev fix the auth bug` |\n| `\u002Fagent`            | List all available agents            | `\u002Fagent`                |\n| `\u002Fteam`             | List all available teams             | `\u002Fteam`                 |\n| `@agent_id \u002Freset`  | Reset specific agent conversation    | `@coder \u002Freset`         |\n| `\u002Freset`            | Reset conversation (WhatsApp\u002Fglobal) | `\u002Freset` or `!reset`    |\n| `\u002Frestart`          | Restart TinyAGI process             | `\u002Frestart`              |\n| `message`           | Send to default agent (no prefix)    | `help me with this`     |\n\n**Note:** The `@agent_id` routing prefix requires a space after it (e.g., `@coder fix` not `@coderfix`).\n\n**Access control note:** before routing, channel clients apply sender pairing allowlist checks.\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Update commands\u003C\u002Fb>\u003C\u002Fsummary>\n\n| Command  | Description                       | Example           |\n| -------- | --------------------------------- | ----------------- |\n| `update` | Update TinyAGI to latest version | `tinyagi update` |\n\n> **Note:** If you are on v0.0.1 or v0.0.2, the update script was broken. Please re-install instead:\n>\n> ```bash\n> curl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002FTinyAGI\u002Ftinyagi\u002Fmain\u002Fscripts\u002Finstall.sh | bash\n> ```\n>\n> Your settings and user data will be preserved.\n\n**Auto-detection:** TinyAGI checks for updates on startup (once per hour).\n\n**Disable update checks:**\n\n```bash\nexport TINYAGI_SKIP_UPDATE_CHECK=1\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Configuration commands\u003C\u002Fb>\u003C\u002Fsummary>\n\n| Command                  | Description                  | Example                          |\n| ------------------------ | ---------------------------- | -------------------------------- |\n| `reset`                  | Reset all conversations      | `tinyagi reset`                 |\n| `channels reset \u003Cchan>`  | Reset channel authentication | `tinyagi channels reset whatsapp` |\n\n\u003C\u002Fdetails>\n\n## 🤖 Using Agents\n\nUse `@agent_id` prefix to route messages to specific agents:\n\n```text\n@coder fix the authentication bug\n@writer document the API endpoints\nhelp me with this  ← goes to tinyagi agent (no prefix needed)\n```\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Agent configuration\u003C\u002Fb>\u003C\u002Fsummary>\n\nAgents are configured in `.tinyagi\u002Fsettings.json`:\n\n```json\n{\n  \"agents\": {\n    \"coder\": {\n      \"name\": \"Code Assistant\",\n      \"provider\": \"anthropic\",\n      \"model\": \"sonnet\",\n      \"working_directory\": \"\u002FUsers\u002Fme\u002Ftinyagi-workspace\u002Fcoder\"\n    },\n    \"writer\": {\n      \"name\": \"Technical Writer\",\n      \"provider\": \"custom:my-proxy\",\n      \"model\": \"gpt-5.3-codex\",\n      \"working_directory\": \"\u002FUsers\u002Fme\u002Ftinyagi-workspace\u002Fwriter\"\n    }\n  }\n}\n```\n\nEach agent operates in isolation:\n\n- **Separate workspace directory** - `~\u002Ftinyagi-workspace\u002F{agent_id}\u002F`\n- **Own conversation history** - Maintained by CLI\n- **Custom configuration** - `.claude\u002F`, `heartbeat.md` (root), `AGENTS.md`\n- **Independent resets** - Reset individual agent conversations\n\nSee [docs\u002FAGENTS.md](docs\u002FAGENTS.md) for full details on architecture, use cases, and advanced features.\n\n\u003C\u002Fdetails>\n\n## 📐 Architecture\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Message flow diagram\u003C\u002Fb>\u003C\u002Fsummary>\n\n```text\n┌─────────────────────────────────────────────────────────────┐\n│                     Message Channels                         │\n│         (Discord, Telegram, WhatsApp, Web, API)             │\n└────────────────────┬────────────────────────────────────────┘\n                     │ enqueueMessage()\n                     ↓\n┌─────────────────────────────────────────────────────────────┐\n│               ~\u002F.tinyagi\u002Ftinyagi.db (SQLite)               │\n│                                                              │\n│  messages: pending → processing → completed \u002F dead          │\n│  responses: pending → acked                                  │\n│                                                              │\n└────────────────────┬────────────────────────────────────────┘\n                     │ Queue Processor\n                     ↓\n┌─────────────────────────────────────────────────────────────┐\n│              Parallel Processing by Agent                    │\n│                                                              │\n│  Agent: coder        Agent: writer       Agent: assistant   │\n│  ┌──────────┐       ┌──────────┐        ┌──────────┐       │\n│  │ Message 1│       │ Message 1│        │ Message 1│       │\n│  │ Message 2│ ...   │ Message 2│  ...   │ Message 2│ ...   │\n│  │ Message 3│       │          │        │          │       │\n│  └────┬─────┘       └────┬─────┘        └────┬─────┘       │\n│       │                  │                     │            │\n└───────┼──────────────────┼─────────────────────┼────────────┘\n        ↓                  ↓                     ↓\n   claude CLI         claude CLI             claude CLI\n  (workspace\u002Fcoder)  (workspace\u002Fwriter)  (workspace\u002Fassistant)\n```\n\n\u003C\u002Fdetails>\n\n**Key features:**\n\n- **SQLite queue** - Atomic transactions via WAL mode, no race conditions\n- **Parallel agents** - Different agents process messages concurrently\n- **Sequential per agent** - Preserves conversation order within each agent\n- **Retry & dead-letter** - Failed messages retry up to 5 times, then enter dead-letter queue\n- **Isolated workspaces** - Each agent has its own directory and context\n\nSee [docs\u002FQUEUE.md](docs\u002FQUEUE.md) for detailed queue system documentation.\n\n## ⚙️ Configuration\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Settings file reference\u003C\u002Fb>\u003C\u002Fsummary>\n\nLocated at `.tinyagi\u002Fsettings.json`:\n\n```json\n{\n  \"channels\": {\n    \"enabled\": [\"discord\", \"telegram\", \"whatsapp\"],\n    \"discord\": { \"bot_token\": \"...\" },\n    \"telegram\": { \"bot_token\": \"...\" },\n    \"whatsapp\": {}\n  },\n  \"workspace\": {\n    \"path\": \"\u002FUsers\u002Fme\u002Ftinyagi-workspace\",\n    \"name\": \"tinyagi-workspace\"\n  },\n  \"agents\": {\n    \"tinyagi\": {\n      \"name\": \"TinyAGI Agent\",\n      \"provider\": \"anthropic\",\n      \"model\": \"opus\",\n      \"working_directory\": \"\u002FUsers\u002Fme\u002Ftinyagi-workspace\u002Ftinyagi\"\n    }\n  },\n  \"teams\": {\n    \"dev\": {\n      \"name\": \"Development Team\",\n      \"agents\": [\"coder\", \"reviewer\"],\n      \"leader_agent\": \"coder\"\n    }\n  },\n  \"custom_providers\": {\n    \"my-proxy\": {\n      \"name\": \"My Proxy\",\n      \"harness\": \"claude\",\n      \"base_url\": \"https:\u002F\u002Fproxy.example.com\u002Fv1\",\n      \"api_key\": \"sk-...\",\n      \"model\": \"claude-sonnet-4-6\"\n    }\n  },\n  \"models\": {\n    \"anthropic\": { \"api_key\": \"sk-ant-...\", \"oauth_token\": \"sk-ant-oat01-...\" },\n    \"openai\": { \"api_key\": \"sk-...\" }\n  },\n  \"monitoring\": {\n    \"heartbeat_interval\": 3600\n  }\n}\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Heartbeat configuration\u003C\u002Fb>\u003C\u002Fsummary>\n\nEdit agent-specific heartbeat prompts:\n\n```bash\nnano ~\u002Ftinyagi-workspace\u002Fcoder\u002Fheartbeat.md\n```\n\nDefault heartbeat prompt:\n\n```markdown\nCheck for:\n\n1. Pending tasks\n2. Errors\n3. Unread messages\n\nTake action if needed.\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Directory structure\u003C\u002Fb>\u003C\u002Fsummary>\n\n```text\ntinyagi\u002F\n├── packages\u002F                # Monorepo packages\n│   ├── core\u002F                #   Shared types, config, queue, agent invocation\n│   ├── main\u002F                #   Queue processor entry point\n│   ├── teams\u002F               #   Team conversation orchestration\n│   ├── server\u002F              #   API server (REST + SSE)\n│   ├── channels\u002F            #   Channel clients (Discord, Telegram, WhatsApp)\n│   ├── cli\u002F                 #   CLI commands\n│   └── visualizer\u002F          #   TUI dashboard and chatroom viewer\n├── tinyoffice\u002F              # TinyOffice web portal (Next.js)\n├── .tinyagi\u002F               # TinyAGI data (created at runtime)\n│   ├── settings.json        #   Configuration\n│   ├── tinyagi.db          #   SQLite queue database\n│   ├── logs\u002F                #   All logs\n│   ├── channels\u002F            #   Channel state\n│   ├── files\u002F               #   Uploaded files\n│   ├── pairing.json         #   Sender allowlist state\n│   ├── chats\u002F               #   Team conversation history\n│   │   └── {team_id}\u002F       #     Per-team chat logs\n│   ├── .claude\u002F             #   Template for agents\n│   ├── heartbeat.md         #   Template for agents\n│   └── AGENTS.md            #   Template for agents\n├── ~\u002Ftinyagi-workspace\u002F    # Agent workspaces\n│   ├── tinyagi\u002F            #   Default agent\n│   ├── coder\u002F\n│   └── writer\u002F\n└── scripts\u002F                 # Installation scripts\n```\n\n\u003C\u002Fdetails>\n\n## 🎯 Use Cases\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Examples\u003C\u002Fb>\u003C\u002Fsummary>\n\n### Personal AI Assistant\n\n```text\nYou: \"Remind me to call mom\"\nClaude: \"I'll remind you!\"\n[1 hour later via heartbeat]\nClaude: \"Don't forget to call mom!\"\n```\n\n### Multi-Agent Workflow\n\n```text\n@coder Review and fix bugs in auth.ts\n@writer Document the changes\n@reviewer Check the documentation quality\n```\n\n### Team Collaboration\n\n```text\n@dev fix the auth bug\n# → Routes to team leader (@coder)\n# → Coder fixes bug, mentions @reviewer in response\n# → Reviewer automatically invoked, reviews changes\n# → Combined response sent back to user\n```\n\nTeams support sequential chains (single handoff) and parallel fan-out (multiple teammate mentions). See [docs\u002FTEAMS.md](docs\u002FTEAMS.md) for details.\n\n### Cross-Device Access\n\n- WhatsApp on phone, Discord on desktop, Telegram anywhere, CLI for automation\n- All channels share agent conversations!\n\n\u003C\u002Fdetails>\n\n## 📚 Documentation\n\n- [AGENTS.md](docs\u002FAGENTS.md) - Agent management, routing, and custom providers\n- [TEAMS.md](docs\u002FTEAMS.md) - Team collaboration, chain execution, chat rooms, and visualizer\n- [QUEUE.md](docs\u002FQUEUE.md) - Queue system and message flow\n- [tinyoffice\u002FREADME.md](tinyoffice\u002FREADME.md) - TinyOffice web portal\n- [PLUGINS.md](docs\u002FPLUGINS.md) - Plugin development guide\n- [TROUBLESHOOTING.md](docs\u002FTROUBLESHOOTING.md) - Common issues and solutions\n\n## 🐛 Troubleshooting\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Quick fixes & common issues\u003C\u002Fb>\u003C\u002Fsummary>\n\n```bash\n# Reset everything (preserves settings)\ntinyagi stop && rm -rf .tinyagi\u002Fqueue\u002F* && tinyagi start\n\n# Reset WhatsApp\ntinyagi channels reset whatsapp\n\n# Check status\ntinyagi status\n\n# View logs\ntinyagi logs all\n```\n\n**Common issues:**\n\n- WhatsApp not connecting → Reset auth: `tinyagi channels reset whatsapp`\n- Messages stuck → Clear queue: `rm -rf .tinyagi\u002Fqueue\u002Fprocessing\u002F*`\n- Agent not found → Check: `tinyagi agent list`\n- Corrupted settings.json → TinyAGI auto-repairs invalid JSON (trailing commas, comments, BOM) and creates a `.bak` backup\n\n\u003C\u002Fdetails>\n\n**Need help?** [GitHub Issues](https:\u002F\u002Fgithub.com\u002FTinyAGI\u002Ftinyagi\u002Fissues) · `tinyagi logs all`\n\n## 🙏 Credits\n\n- Inspired by [OpenClaw](https:\u002F\u002Fopenclaw.ai\u002F) by Peter Steinberger\n- Built on [Claude Code](https:\u002F\u002Fclaude.com\u002Fclaude-code) and [Codex CLI](https:\u002F\u002Fdocs.openai.com\u002Fcodex)\n- Uses [discord.js](https:\u002F\u002Fdiscord.js.org\u002F), [whatsapp-web.js](https:\u002F\u002Fgithub.com\u002Fpedroslopez\u002Fwhatsapp-web.js), [node-telegram-bot-api](https:\u002F\u002Fgithub.com\u002Fyagop\u002Fnode-telegram-bot-api)\n\n## 📄 License\n\nMIT\n\n---\n\n**TinyAGI - Tiny but mighty!** 🦞✨\n\n[![Star History Chart](https:\u002F\u002Fapi.star-history.com\u002Fimage?repos=TinyAGI\u002Ftinyagi&type=date&legend=top-left)](https:\u002F\u002Fwww.star-history.com\u002F?repos=TinyAGI%2Ftinyagi&type=date&legend=top-left)","TinyAGI 是一个面向个人公司的多代理团队协调器。它支持多代理、多团队和多渠道协作，允许用户运行多个具有特定角色的AI代理，并在隔离的工作空间中同时协作。技术特点包括通过多种AI提供商（如Anthropic Claude和OpenAI Codex）实现的多通道通讯能力（如Discord、WhatsApp和Telegram），以及一个基于浏览器的控制面板(TinyOffice)用于管理聊天记录、任务和设置等。此外，TinyAGI还提供了插件系统以扩展功能，支持持久会话保持对话上下文连续性，适合需要全天候自动化助手处理复杂工作流程的小型企业或个人使用。",2,"2026-06-11 03:50:56","high_star"]