Getting Started
Prerequisites
REQUIRED
- ✓Node.js 18+ — runtime for the KyberBot CLI
- ✓Docker — required for memory services
- ✓Claude Code subscription — KyberBot runs on top of Claude Code
OPTIONAL
- ○Telegram account — if you want to message your agent via Telegram
- ○WhatsApp — if you want to message your agent via WhatsApp
node --version # Node 20 or 22 LTS recommended (must be <25) docker --version # Should show Docker version claude --version # Should show Claude Code version pnpm --version # pnpm 9+ required (install: npm i -g pnpm)
Installation
# Install KyberBot (one time) git clone https://github.com/KybernesisAI/kyberbot.git cd kyberbot pnpm install && pnpm run build cd packages/cli && pnpm link --global && cd ../.. # Create your agent mkdir ~/my-agent && cd ~/my-agent kyberbot onboard
Think of the kyberbot/ folder like installing an app — you don't work inside it. The agent folder is your agent. Everything it knows, everything it learns, its entire personality and memory — all lives there.
The kyberbot onboard wizard walks you through 7 steps:
Starting Services
# Start all services (leave running) kyberbot # In a new terminal — talk to your agent cd ~/my-agent && claude
This starts memory services (Docker), the REST API server, heartbeat scheduler, sleep agent, and any configured messaging channels. You'll see a splash screen with your agent's name and service status.
kyberbot # Start all services kyberbot --no-sleep # Disable sleep agent kyberbot --no-channels # Disable messaging channels kyberbot --no-heartbeat # Disable heartbeat scheduler
First Conversation
When you first open Claude Code in your agent folder, the agent will warmly introduce itself and ask to learn about you. This is normal — it is reading its SOUL.md and USER.md for the first time and wants to fill in the gaps. Share as much or as little as you like — everything gets stored in its brain for future sessions.
> Hey Atlas, what do you know about me? > Remember that my product launch deadline is June 15th. > What's on my schedule today? > Create a skill for tracking my running mileage.
Updating
When a new version is released, the update command handles both the CLI source update and template refresh inside your agent instance:
cd ~/my-agent kyberbot update # Full update: CLI source + agent templates kyberbot update --check # Preview what would change kyberbot update --templates # Only refresh template files
Why KyberBot?
The Core Idea
Most personal AI agent projects follow the same pattern: build a custom framework, wrap an LLM API, manage tokens, handle tool calling, implement memory from scratch, and deploy a server. The result is a complex system that costs money per token and requires ongoing maintenance.
KyberBot takes a different approach: build on top of Claude Code instead of building from scratch. Claude Code is already an exceptional AI agent. It just lacks persistence — memory, identity, scheduling, and communication channels. KyberBot adds exactly those things. Nothing more.
Philosophy
KyberBot is built on three beliefs:
Not just in this conversation, but always. Memory is not a feature — it is the foundation.
Static configurations are a snapshot. Living documents that the agent updates are a trajectory. The agent should get better at helping you without you doing anything.
Local-first. No data leaves your machine unless you choose to sync it. No vendor lock-in. MIT licensed.
The Claude Code Advantage
By building on Claude Code, KyberBot inherits capabilities that would take months to build from scratch:
Subscription Model
KyberBot costs nothing beyond your Claude Code subscription:
| KyberBot | API-Based | |
|---|---|---|
| Base cost | $0 (uses subscription) | $0 |
| Per-message cost | $0 | $0.01-0.10+ |
| Heavy usage (1000 msgs/day) | $0 | $10-100+/day |
| Model upgrades | Automatic | Requires migration |
| Rate limits | Claude Code limits | API tier-dependent |
| Aspect | KyberBot | LettaBot |
|---|---|---|
| Language | TypeScript | Python |
| Runtime | Claude Code CLI | Custom Python server |
| LLM Access | Subscription ($0) | API tokens (pay per use) |
| Memory | Kybernesis Local + sleep | Custom memory server |
| Self-Evolution | SOUL.md, USER.md, skills | Static config files |
| Skill Creation | Agent generates on the fly | Manual Python registration |
| Sub-Agents | Native Claude Code | Single agent loop |
| Scheduling | HEARTBEAT.md (natural) | External cron |
| Messaging | Telegram, WhatsApp built-in | API endpoints (BYO client) |
| Setup | Clone + onboard (2 min) | Docker + API keys + config |
Choose LettaBot if you want Python-native, self-hosted inference, or non-Claude models.
Choose KyberBot if you want the simplest path to a capable personal agent with self-evolution out of the box.
Who Is KyberBot For?
IDEAL_FOR
- Claude Code power users who want persistence between sessions
- Developers who want a personal agent without building a framework
- People who value privacy and want local-first data
- Anyone tired of re-explaining context to AI every session
NOT_IDEAL_FOR
- Teams looking for a shared agent platform (KyberBot is personal, single-user)
- Non-Claude users who want to use GPT, Gemini, or open-source models
- Production API services that need to serve multiple users at scale
- People without a Claude Code subscription (it is required)
Brain — Memory Architecture
The brain is KyberBot's long-term memory system. It stores conversations, tracks entities and relationships, extracts structured facts with source confidence, detects contradictions, generates insights through reasoning, and continuously improves quality through background maintenance. All data lives locally — nothing leaves your machine unless you opt into Kybernesis Cloud.
Search across all memories by meaning, not just keywords
Entities, relationships, alias dedup, narrative profiles, noise filtering
Structured facts with source confidence, contradiction tracking, and decay
Temporal log of events, conversations, and notes
Deduction and induction — derives insights the agent wasn’t explicitly told
10-step cycle: decay, tag, link, tier, summarize, facts, profiles, reasoning, hygiene
Hybrid Search
Searches use Reciprocal Rank Fusion (RRF) to merge semantic, keyword, and temporal results without tuned weights. For entity queries, a 5-layer fact-first retrieval expands through the entity graph.
Sleep Agent Pipeline
The sleep agent runs continuously in the background, performing a 10-step maintenance cycle every hour:
Self-Evolution
KyberBot agents are not static. They evolve over days, weeks, and months through four mechanisms:
Living Documents
SOUL.md, USER.md, HEARTBEAT.md are continuously updated by the agent
Skill Auto-Generation
The agent creates new skills when it encounters unfamiliar tasks
Sub-Agent Creation
Specialized agents spawned for complex multi-step workflows
Memory Maintenance
Sleep agent continuously refines and organizes stored knowledge
Evolution Over Time
| Traditional | KyberBot |
|---|---|
| Edit system prompt to change personality | Agent evolves SOUL.md through use |
| Write JSON config for preferences | Agent accumulates knowledge in USER.md |
| Set up cron jobs for tasks | Agent manages HEARTBEAT.md tasks |
| Code new tools in Python/TS | Agent generates skills in markdown |
| Manually clean stale data | Sleep agent maintains memory quality |
What Is Protected
Not everything can be modified by the agent. These files are protected and require manual editing:
| File | Why Protected |
|---|---|
| identity.yaml | Core identity config. Changing this could break integrations. |
| .env | Secrets and API keys. The agent should never write credentials. |
| CLAUDE.md | Claude Code instructions. Auto-generated, changes are overwritten. |
| settings.local.json | Claude Code settings and permissions. |
Safeguards
Every change the agent makes is trackable via git. Major changes are confirmed before writing. The agent tells you when it updates a living document. Evening reviews summarize what was learned and changed, giving you regular checkpoints to correct course.
git log --oneline SOUL.md # See how personality evolved git log --oneline USER.md # See knowledge accumulation git diff HEAD~10 SOUL.md # Compare current vs 10 commits ago git checkout HEAD~5 SOUL.md # Revert to an earlier version
Summary
| Mechanism | What Evolves | Frequency |
|---|---|---|
| SOUL.md | Personality, style | As needed |
| USER.md | User knowledge | As new info arrives |
| HEARTBEAT.md | Recurring tasks | Weekly review |
| Skills | Capabilities | On demand |
| Sub-agents | Workflow specialists | Rare |
| Memory | Knowledge quality | Continuous (sleep) |
Living Documents
Three markdown files define your agent's identity, knowledge, and routine. The agent reads them at session start and updates them as it learns.
Document Interaction
The three documents work together: SOUL.md tells the agent how to communicate, USER.md tells it what it knows about you, and HEARTBEAT.md tells it what to do on a schedule. When running a heartbeat task, the agent reads all three for context. During conversation, it reads SOUL.md and USER.md and may update them with new information.
Best practice: Let the agent write. Start minimal. Review periodically. Use git history. Correct explicitly when something is wrong — "That's wrong, I actually prefer X" is more effective than silently editing the file.
Skills
Skills are reusable capabilities — markdown files with structured metadata that teach the agent how to perform specific tasks your way, every time.
SKILL.md Format
--- name: running-tracker description: Track and analyze running mileage version: 1.0.0 requires_env: [] has_setup: false --- # Running Tracker ## What This Does Track daily runs and calculate weekly/monthly totals. ## How to Use - "log a run" - "running mileage" - "how far did I run" ## Implementation 1. Extract: distance, duration, date, notes 2. Store in brain with tag "running" 3. Calculate weekly/monthly totals when queried 4. Compare against goals in USER.md
| Field | Required | Description |
|---|---|---|
| name | Yes | Unique identifier (kebab-case) |
| description | Yes | One-line summary |
| version | No | Semver version (default: 1.0.0) |
| requires_env | No | Environment variables the skill needs |
| has_setup | No | Whether the skill has a setup script |
Auto-Generation
The most powerful way to create skills is to let the agent do it. The skill generator follows a consistent process:
Lifecycle Commands
kyberbot skill list # List all installed skills kyberbot skill info <name> # Show details kyberbot skill create <name> # Scaffold a new skill kyberbot skill remove <name> # Remove a skill kyberbot skill setup <name> # Run skill setup kyberbot skill rebuild # Rebuild CLAUDE.md with current skills
Channels — Messaging Integration
Send a message on Telegram or WhatsApp and get a response from your agent with full personality, memory, and skill context. Both channels are optional.
| Channel | Auth Method | Features |
|---|---|---|
| Telegram | BotFather token + verification code | Text messages, owner-only access |
| QR code scan | Text messages, voice notes, media |
1. Create a bot — Talk to @BotFather on Telegram, send /newbot, get your token.
2. Add the channel
kyberbot channel add telegram
3. Verify ownership — On first start, KyberBot prints a verification code to the console. Send /start CODE to your bot. Only your account will be able to interact with it.
Security: One-time verification code (console only), owner-only access, silent rejection of non-owner messages, persistent across restarts.
kyberbot channel list # List configured channels kyberbot channel add telegram # Add Telegram kyberbot channel add whatsapp # Add WhatsApp kyberbot channel add telegram --reverify # Re-pair Telegram kyberbot channel remove telegram # Remove a channel kyberbot channel status # Check status
Desktop App
KyberBot Desktop is an Electron app that wraps the CLI in a full GUI. One-click install, no terminal required — everything you can do from the command line, you can do from the app.
Service status cards, start/stop controls, ANSI-colored log viewer
SSE streaming responses with tool call visualization
p5.js entity graph visualization, entity browser, notes, timeline, search
Install, configure, and manage skills and messaging channels
Dropdown to switch between agents without restarting the app
Heartbeat management, theme toggle (dark/light), system tray with start/stop/quit
Installation
Download the DMG for macOS, or build from source:
git clone https://github.com/KybernesisAI/kyberbot.git cd kyberbot pnpm install pnpm run dev # Development with hot reload pnpm run build # Production build pnpm run package:mac # Creates DMG
Onboarding Wizard
First launch opens a 10-step onboarding wizard that walks you through agent creation, personality setup, Claude Code configuration, brain initialization, cloud sync, and channel setup — the same steps as kyberbot onboard but with a visual interface.
Multi-Agent Setup
Run multiple KyberBot agents simultaneously, each with their own identity, memory, skills, and channels. A global registry tracks all agents and auto-assigns ports so they never collide. In fleet mode, agents are aware of each other and can proactively reach out during chat and heartbeat sessions — no user intervention required (see Agent Bus). Agents can also run on remote machines (VPS, other computers) and be managed alongside local agents — see Remote Agents for details.
Agent Registry
Global registry at ~/.kyberbot/registry.yaml tracks all agents, their paths, ports, and status.
Port Auto-Assignment
New agents automatically get the next available port (3456, 3457, 3458...). No manual configuration.
Independent Operation
Each agent runs on its own port with its own server, database, and ChromaDB collection.
Resource Efficient
Fleet mode runs all agents in a single process at ~2MB per additional agent vs ~300MB for separate processes.
Three Modes of Operation
Single Agent
Run kyberbot from an agent directory. Original behavior — one agent, one process, one port.
Multiple Independent Agents
Start each agent separately in its own terminal. Each gets its own process, port, and services.
Fleet Mode (Recommended)
kyberbot fleet start runs all registered agents in a shared Node.js process with shared sleep scheduler, agent bus, and fleet management API.
Fleet mode is the most efficient way to run multiple agents:
- ✓Single process — one Node.js process, one port for fleet management (3456)
- ✓Per-agent ports — each agent also listens on its own port so existing tunnel URLs keep working
- ✓Shared sleep scheduler — round-robin instead of N independent sleep agents
- ✓Agent Bus — inter-agent communication (see next section)
- ✓Fleet API — /fleet, /fleet/agents, /fleet/bus/* endpoints for management
- ✓Agent routing — each agent accessible via /agent/{name}/* on the fleet port
Fleet CLI Commands
kyberbot fleet list # Show registered agents kyberbot fleet register [path] # Register an agent at path kyberbot fleet unregister <name> # Remove from registry kyberbot fleet start # Start all agents in shared runtime kyberbot fleet start --only atlas,nova # Start specific agents kyberbot fleet stop [name] # Stop agents kyberbot fleet status # Health dashboard kyberbot fleet defaults --auto-start a,b # Set default agents
Agent Bus
The Agent Bus is an inter-agent communication system. Agents can send messages to each other and receive Claude-powered responses — enabling delegation, knowledge sharing, incident coordination, and second opinions across your agent fleet. With proactive communication, agents autonomously decide when to reach out to each other during conversations and heartbeat tasks.
Proactive Communication
Agents are not limited to user-initiated bus commands. Every agent in the fleet is automatically aware of every other agent — their names, roles, and specializations are injected into every system prompt (chat sessions, heartbeat tasks, and messaging channels). During any conversation or heartbeat task, an agent can autonomously decide to contact another agent via kyberbot bus send.
Fleet Awareness
Every agent knows about every other agent in the fleet. Names, roles, and specializations are injected into system prompts automatically.
Autonomous Outreach
Agents decide on their own when to contact another agent. No user intervention required — they just do it during normal operation.
When to Communicate
Domain expertise needed, cross-domain issues, incident escalation, second opinions on important decisions, knowledge that other agents need.
When NOT to Communicate
Routine tasks the agent can handle alone, trivial or low-value information, questions the agent can answer from its own memory.
How It Works
The bus is an in-process EventEmitter-based message system. When agent A sends a message to agent B, the following happens:
Topic Subscriptions
Agents can subscribe to topics from specific agents or from the entire fleet. When a matching message is sent on the bus, subscribers get a notification queued for their next heartbeat cycle or chat session — no interruption to their current work.
subscriptions:
- from: atlas
topic: security
- from: "*"
topic: incidentkyberbot bus subscribe <from> <topic> # Subscribe to messages on a topic kyberbot bus unsubscribe <from> <topic> # Remove a subscription kyberbot bus subscriptions # List active subscriptions
Message Types
| Type | Description |
|---|---|
| query | Ask another agent a question and get a response |
| notify | Inform an agent of something (fire-and-forget) |
| delegate | Hand off a task to another agent |
| response | Reply to a previous message |
Broadcast: Send a message to all agents at once by setting to: '*' or using the broadcast command.
Persistence
All bus messages are stored in SQLite at ~/.kyberbot/bus.db. Messages survive fleet restarts and are fully searchable by agent, topic, and date.
Safety
CLI Commands
kyberbot bus send <agent> "<message>" # Send to specific agent kyberbot bus broadcast "<message>" # Broadcast to all agents kyberbot bus history # Show recent messages kyberbot bus history --agent nova # Filter by agent kyberbot bus subscribe <from> <topic> # Subscribe to messages on a topic kyberbot bus unsubscribe <from> <topic> # Remove a subscription kyberbot bus subscriptions # List active subscriptions
API Endpoints
When running in fleet mode, the fleet server exposes bus endpoints:
| Endpoint | Body / Params |
|---|---|
| POST /fleet/bus/send | { from, to, message, topic } |
| POST /fleet/bus/broadcast | { from, message, topic } |
| GET /fleet/bus/history | ?agent=nova&limit=20 |
| POST /fleet/bus/subscribe | { agent, from, topic } |
| DELETE /fleet/bus/subscribe | { agent, from, topic } |
| GET /fleet/bus/subscriptions | ?agent=atlas |
Architecture
Three Modes
Agent SDK (Recommended)
Uses @anthropic-ai/claude-code programmatically. No API keys, no per-token costs. Full Claude Code features.
SDK Mode
Direct Anthropic API via @anthropic-ai/sdk. Requires ANTHROPIC_API_KEY. Standard token costs. No Claude Code features.
Subprocess (Fallback)
Spawns claude -p as a child process. Same capabilities as Agent SDK but higher overhead. Automatic fallback.
File Structure
my-agent/ ├── SOUL.md # Agent personality (living) ├── USER.md # User knowledge (living) ├── HEARTBEAT.md # Recurring tasks (living) ├── identity.yaml # Agent identity config ├── .env # Secrets and configuration ├── heartbeat-state.json # Scheduler state │ ├── brain/ # Markdown knowledge files │ ├── projects/ │ └── people/ │ ├── skills/ # Skill files │ └── my-skill/ │ └── SKILL.md │ ├── data/ # Runtime data (gitignored) │ ├── chromadb/ # Vector storage │ ├── entity-graph.db # Entity graph │ ├── timeline.db # Timeline │ └── sleep.db # Sleep agent state │ ├── .claude/ # Claude Code config │ ├── CLAUDE.md # Operating instructions │ └── settings.local.json │ └── logs/ # Application logs
Multi-Agent Runtime
When running in fleet mode, the architecture extends to support multiple agents in a single process. Each agent is wrapped in an AgentRuntime that manages its own server, databases, channels, and heartbeat scheduler. The FleetManager orchestrates all runtimes, exposes the fleet API, and provides a shared FleetSleepScheduler that runs sleep cycles round-robin across agents instead of each agent running its own independent sleep process.
Each agent maintains its own ChromaDB collection for vector isolation, ensuring that brain searches only return results from the queried agent's memory. The Agent Bus connects all runtimes via an in-process EventEmitter, enabling inter-agent messaging without network overhead. In fleet mode, each agent also listens on its own per-agent port so existing tunnel URLs and channel webhooks continue to work unchanged.
Kybernesis — Optional Cloud Brain
Kybernesis is an optional cloud service that provides a queryable workspace memory for your agent. KyberBot works fully offline without it — Kybernesis adds cross-device access and cloud-backed recall that complements your local brain.
Setup
1. Sign up at kybernesis.ai and create a workspace
2. Generate an API key in Settings > API Keys
3. Add to your .env:
KYBERNESIS_API_KEY=your_api_key_here
That's all. No agent_id, no workspace_id, no identity.yaml changes. Can also be configured during onboarding.
kyberbot kybernesis query "..." # Search cloud workspace memory kyberbot kybernesis list # Browse all memories kyberbot kybernesis status # Check connection status kyberbot kybernesis disconnect # Switch to local-only memory
Disconnecting
To switch back to local-only memory:
kyberbot kybernesis disconnect
This removes the API key from .env. After disconnecting, restart the server and Claude. Your cloud memories are preserved — nothing is deleted. To reconnect later, add the key back to .env.
Privacy
Kybernesis sees only the queries you send to it. It does NOT see your .env, local brain, WhatsApp/Telegram sessions, or Claude Code credentials. Data is encrypted in transit and at rest. You can delete your workspace and all data at any time. Kybernesis does not use your data for model training.
Using Without Kybernesis
KyberBot is fully functional without Kybernesis. All memory, search, and agent features work locally. Kybernesis adds convenience (cloud-backed recall, cross-device access) but is not required for any core functionality. The entire brain is in your project directory under data/ and brain/ — back it up with any method you prefer.
Kybernesis handles the hard parts of memory — hybrid search, automatic tiering, a sleep agent that maintains quality while you're away. Start free.
CREATE_FREE_ACCOUNTCLI Reference
Complete reference for all KyberBot CLI commands. 18 top-level commands, 55 subcommands.
Core
| kyberbot run | Start all services |
| kyberbot onboard | Set up a new agent |
| kyberbot update | Update CLI and refresh templates |
| kyberbot status | Show service health dashboard |
run: --no-channels, --no-sleep, --no-heartbeat, -v/--verbose | update: --check, --templates | status: --json
Memory
| kyberbot remember <text> | Store to timeline, entity graph, and embeddings |
| kyberbot recall [query] | Look up person, project, or topic from entity graph |
| kyberbot search <query> | Semantic search across all indexed content |
| kyberbot timeline | Query timeline of events and conversations |
Brain
| kyberbot brain query <prompt> | Ask the brain a question (search + AI synthesis) |
| kyberbot brain search <query> | Semantic search across the brain |
| kyberbot brain add <file> | Index a file into the brain |
| kyberbot brain status | Show brain health and statistics |
Sleep Agent
| kyberbot sleep status | Show recent runs and stats |
| kyberbot sleep run | Run sleep cycle immediately |
| kyberbot sleep edges | Show memory relationships |
| kyberbot sleep health | Health check (for monitoring) |
| kyberbot sleep merges | Entity merge/cleanup audit trail |
Heartbeat
| kyberbot heartbeat list | Show tasks from HEARTBEAT.md |
| kyberbot heartbeat status | Show config and execution state |
| kyberbot heartbeat run | Trigger an immediate heartbeat tick |
Skills
| kyberbot skill list | Show installed skills |
| kyberbot skill create <name> | Scaffold a new skill |
| kyberbot skill remove <name> | Remove a skill |
| kyberbot skill info <name> | Show skill details |
| kyberbot skill setup <name> | Run setup script for a skill |
| kyberbot skill rebuild | Rebuild CLAUDE.md with current skills |
Sub-Agents
| kyberbot agent list | Show installed agents |
| kyberbot agent create <name> | Scaffold a new agent |
| kyberbot agent remove <name> | Remove an agent |
| kyberbot agent info <name> | Show agent details |
| kyberbot agent spawn <name> <prompt> | Spawn an agent with a task |
| kyberbot agent rebuild | Rebuild CLAUDE.md with current agents |
Channels
| kyberbot channel list | Show configured channels |
| kyberbot channel add <type> | Add a messaging channel |
| kyberbot channel remove <type> | Remove a messaging channel |
| kyberbot channel status | Check connectivity |
Tunnel
| kyberbot tunnel setup | Configure ngrok authtoken and enable tunnel |
| kyberbot tunnel status | Check active tunnel status |
| kyberbot tunnel start | Manually start ngrok tunnel |
Kybernesis Cloud
| kyberbot kybernesis query <message> | Search the cloud brain |
| kyberbot kybernesis list | List all cloud memories |
| kyberbot kybernesis status | Check connection status |
| kyberbot kybernesis disconnect | Remove API key, switch to local-only |
Fleet
| kyberbot fleet list | Show registered agents with status |
| kyberbot fleet register [path] | Register agent at path |
| kyberbot fleet register-remote <name> | Register a remote agent via ngrok URL |
| kyberbot fleet unregister <name> | Remove from registry |
| kyberbot fleet start | Start fleet (shared runtime) |
| kyberbot fleet stop [name] | Stop agents |
| kyberbot fleet status | Fleet health dashboard |
| kyberbot fleet defaults | Set auto-start defaults |
start: --only <agents> | defaults: --auto-start <agents> | register-remote: --url <ngrok-url> --token <api-token>
Agent Bus
| kyberbot bus send <agent> <msg> | Send message to agent (Claude-powered response) |
| kyberbot bus broadcast <msg> | Broadcast to all agents |
| kyberbot bus history | Show message history |
| kyberbot bus subscribe <from> <topic> | Subscribe to messages on a topic |
| kyberbot bus unsubscribe <from> <topic> | Remove a subscription |
| kyberbot bus subscriptions | List active subscriptions |
history: --agent <name>, --limit <n> | subscribe: from can be "*" for all agents
Orchestration
| kyberbot orch init | Run the orchestration setup wizard |
| kyberbot orch status | Company overview, workloads, issue counts |
| kyberbot orch org | Display the org chart |
| kyberbot orch org set <agent> | Add/update agent in org chart (--role, --reports-to, --ceo) |
| kyberbot orch org remove <agent> | Remove agent from orchestration |
| kyberbot orch goals | List goals with KPI progress |
| kyberbot orch goals create | Create a new goal (interactive or flags) |
| kyberbot orch goals <id> | Goal detail with KPIs and children |
| kyberbot orch issues | List open issues (kanban-style) |
| kyberbot orch issues create | Create a new issue |
| kyberbot orch issues <id> | Issue detail with comments |
| kyberbot orch issues assign <id> <agent> | Assign issue to an agent |
| kyberbot orch issues transition <id> <status> | Move issue to a new status |
| kyberbot orch inbox | Show pending inbox escalations |
| kyberbot orch inbox resolve <id> | Resolve an inbox item |
| kyberbot orch activity | Recent activity log |
issues: --all (include done/cancelled) | activity: --agent <name> | See Orchestration docs for full details
Remote Agents
Manage agents running on other machines (VPS, other computers) from your desktop app or CLI. Agents communicate across machines via the Agent Bus.
Set Up a Remote Agent
Install KyberBot on the remote machine and configure it to accept incoming connections via an ngrok tunnel.
Install KyberBot
Install KyberBot on the remote machine (VPS, cloud server, another laptop).
Create the agent
Run kyberbot onboard to create the agent with its own identity, brain, and skills.
Enable ngrok tunnel
In identity.yaml, set tunnel: { enabled: true } so the agent is reachable from the internet.
Start the agent
Run kyberbot run. The agent starts its server and opens the ngrok tunnel.
Copy connection details
Copy the ngrok URL and API token from the startup output. You'll need these to register the agent.
Register from CLI
Use the fleet CLI to register the remote agent with its ngrok URL and API token.
kyberbot fleet register-remote nova --url https://xyz.ngrok.dev --token kb_xxx kyberbot fleet list # Shows both local and remote agents
Register from Desktop
Open the agent dropdown in the title bar
Click "Add Remote Agent"
Enter the agent name, ngrok URL, and API token
The agent appears in the dropdown with a remote indicator
How Communication Works
Local → Remote
Bus message routed via HTTP POST to the remote agent's /api/bus/receive endpoint.
Remote → Local
Remote agent sends via kyberbot bus send to the fleet server's tunnel URL.
Persistent History
All messages stored in SQLite bus history on both sides for durability.
Claude-Powered Responses
Remote agent searches its own brain and uses its own personality to generate responses.
Limitations
- •Can't start/stop remote agents from the desktop (no process control)
- •Log streaming not available for remote agents
- •Configuration changes require direct access to the remote machine
Security
HTTPS
All communication via HTTPS — ngrok provides TLS termination automatically.
Bearer Token Auth
Every request includes a bearer token. Unauthenticated requests are rejected.
Per-Agent Tokens
Each agent has its own API token. Compromising one token doesn't affect other agents.
Orchestration
Orchestration lets you organize your fleet of agents into a company. A CEO agent drives strategy — setting goals, creating issues, assigning work, and managing the backlog — while worker agents execute tasks autonomously. Humans only intervene when agents escalate blockers to the inbox. The entire system is managed from the desktop app; no CLI required.
Company Metaphor
Your agents form a company with a CEO, workers, goals, KPIs, projects, and a Kanban issue board. The CEO thinks strategically; workers execute.
Human-in-the-Loop
Agents escalate blockers to a shared inbox. You review, respond, or dismiss from the desktop app. No babysitting required for normal operation.
Fully Autonomous
The CEO heartbeat reads all state, creates and assigns issues, and @-mentions workers. Workers auto-checkout issues and run them through Claude.
Setup
Orchestration is initialized through a setup wizard in the desktop app. Open the Orchestration tab and you'll see the setup screen where you configure your company.
Company Name
Choose a name for your agent company. This appears in the org chart header and issue board.
Description
A short description of the company's mission. The CEO agent uses this as context when making strategic decisions.
CEO Selection
Pick which agent in your fleet will serve as CEO. This agent gets the orchestrator heartbeat and drives all planning.
Team Auto-Populated
All other agents in the fleet are automatically added as workers. You can add or remove agents from orchestration later without affecting the fleet itself.
You can also initialize from the CLI with kyberbot orch init.
Org Chart
The org chart visualizes your company hierarchy. The CEO sits at the top and worker agents are arranged below. Adding or removing an agent from orchestration is independent of the fleet registry — an agent can be in the fleet without participating in orchestration.
CEO at Top
The CEO agent card sits at the root of the tree with a teal accent. It shows the agent name, role, and status.
Workers Below
Worker agents are displayed beneath the CEO with connecting lines. Each shows the agent's name and role from identity.yaml.
Add / Remove Agents
Click Edit to add agents from the fleet or remove them from orchestration. Names and descriptions are read-only — always sourced from identity.yaml.
Reassign CEO
In edit mode you can change which agent is the orchestrator. The new CEO picks up the orchestrator heartbeat on the next cycle.
Goals & KPIs
Goals give the CEO strategic direction. They exist at three levels: company, team, and agent. Each goal can have measurable KPIs attached, and goals form a hierarchy through parent/child relationships so team-level goals roll up into company objectives.
Company
Top-level objectives visible to all agents. Set by the human or the CEO.
Team
Goals scoped to a group of agents. The CEO creates team goals and assigns them.
Agent
Personal goals for a single agent. Workers can propose their own goals.
Projects
Projects group related goals and issues under a named umbrella. Every goal and issue can optionally belong to a project. Projects have two states: active and archived. Archiving a project hides its issues from the default board view but preserves all history.
Issue Board (Kanban)
The issue board is a seven-column Kanban view. Issues are the atomic unit of work — the CEO creates them, assigns them to workers, and workers execute them autonomously. Every issue gets a sequential ID in the format KYB-N.
| Column | Description |
|---|---|
| Backlog | Ideas and future work. Not yet prioritized or assigned. |
| Todo | Prioritized and ready. The next issue a worker will pick up. |
| In Progress | Currently being worked on by an agent. |
| In Review | Work complete, awaiting review by the CEO or another agent. |
| Done | Successfully completed. Results visible in comments. |
| Blocked | Cannot proceed. Agent has escalated to the inbox. |
| Cancelled | Intentionally abandoned. Preserved for audit trail. |
Drag-and-drop: Drag issue cards between columns to manually change status. Click any card to open a slide-over panel with full details, comments, and inline editing.
Priority levels: Issues have four priority levels — critical, high, medium, and low. Workers always pick up the highest-priority issue first. Critical issues interrupt current work.
CEO Heartbeat
The CEO agent runs a special orchestrator heartbeat on a configurable interval (default: 30 minutes). Each heartbeat is a full strategic planning cycle where the CEO reads all available state and takes action.
What the CEO reads: Company goals and KPIs, all active projects, full issue board state, org chart and worker assignments, pending inbox items, recent activity log, and agent workload metrics.
What the CEO does: Creates new issues based on goals, assigns them to appropriate workers, manages the backlog, reviews completed work, responds to escalations, @-mentions workers to trigger execution, and proposes new goals or adjusts KPI targets.
Rate limits: The CEO is capped at 5 new issues and 3 new goals per heartbeat to prevent runaway planning.
Worker Heartbeat
Worker agents process issues through a serial queue. Each heartbeat, the worker checks out the highest-priority issue assigned to it, executes the work via Claude, and reports results.
@-Mention Triggers
When any agent or human posts a comment containing @agentname, that agent's heartbeat is triggered immediately. This is how the CEO delegates work in real time and how humans can direct agents from the desktop app.
CEO to Worker
CEO creates an issue, assigns it, and @-mentions the worker. The worker's heartbeat fires immediately.
Worker to CEO
A worker @-mentions the CEO to request review or flag a concern.
Worker to Worker
Workers can @-mention each other for peer review or handoff.
Human to Agent
You can @-mention any agent in a comment from the desktop app to trigger their heartbeat.
Human Inbox
The inbox is where agents escalate problems they cannot solve. When a worker hits a blocker — a missing credential, an ambiguous requirement, a permission they lack — it creates an inbox item instead of guessing. The desktop app shows a badge count on the Inbox tab.
Urgency levels: high, normal, and low. High urgency items indicate production-impacting blockers where multiple agents may be stalled.
Responding: From the inbox, you can dismiss (no action needed), resolve (unblocks the linked issue), or respond with a comment. Using @agentname in your response triggers that agent's heartbeat so it can act on your guidance immediately.
Activity Log
Every action in the orchestration system is recorded in a full audit trail: issue creation, status transitions, assignments, comments, goal changes, inbox escalations, and heartbeat runs. The Activity tab displays events in reverse chronological order, filterable by agent and event type.
Artifacts / Files
When agents produce output — code files, reports, configuration changes — these are automatically detected from the Claude session output and linked as artifacts. The Files tab aggregates all artifacts across all issues, filterable by agent. Click any artifact to view its contents inline.
Live Session Logs
Every heartbeat run produces a session log. The Dashboard shows recent runs with their start time, duration, agent, and outcome. Click a run to view its full stream-json output in real time (for active runs) or after completion. Logs use offset-based polling for efficient incremental updates.
Settings
| Setting | Default | Description |
|---|---|---|
| Auto-orchestration | on | When enabled, the CEO heartbeat runs automatically. Disable for manual-only. |
| Heartbeat interval | 30m | How often the CEO heartbeat fires. Workers respond on-demand via @-mentions. |
| Active hours | Always | Time window for auto-orchestration. Set start/end times to pause overnight. |
CLI Reference
All orchestration features are accessible from the kyberbot orch command group. Changes from the CLI are immediately visible in the desktop app and vice versa.
kyberbot orch init # Run the setup wizard kyberbot orch status # Company overview, workloads, issue counts kyberbot orch org # Display the org chart kyberbot orch goals # List goals with KPI progress kyberbot orch goals create "<title>" # Create a new goal kyberbot orch issues # List open issues kyberbot orch issues create "<title>" # Create a new issue kyberbot orch issues assign <id> <agent> # Assign an issue kyberbot orch issues transition <id> <status> # Move an issue kyberbot orch inbox # Show pending inbox items kyberbot orch inbox resolve <id> # Resolve an inbox item kyberbot orch activity # Recent activity log
REST API
In fleet mode, the fleet server exposes orchestration endpoints under /fleet/orch/*. The desktop app communicates exclusively through these endpoints.
| Endpoint | Description |
|---|---|
| GET /fleet/orch/dashboard | Company overview, agent workloads, issue counts |
| GET|PUT /fleet/orch/org | Org chart management |
| GET|POST /fleet/orch/goals | List and create goals |
| GET|PUT /fleet/orch/goals/:id | Goal detail and updates |
| GET|POST /fleet/orch/issues | List and create issues |
| POST /fleet/orch/issues/:id/transition | Status transitions |
| GET|POST /fleet/orch/issues/:id/comments | Comment thread with @-mention triggers |
| GET|POST /fleet/orch/inbox | Inbox items |
| GET /fleet/orch/activity | Activity log |
| GET|POST /fleet/orch/projects | Project management |
| GET /fleet/orch/runs | Heartbeat run history |
| GET /fleet/orch/runs/:id/log | Session log streaming |
| GET|PUT /fleet/orch/settings | Orchestration settings |
| POST /fleet/orch/heartbeat/:agent | Manual heartbeat trigger |