Features
โโโโโโโโโโโโโโโโ โโโโโโ โโโโโโโโโโโโ โโโโโโโโโโ โโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโ โโโโโโ โโโโโโโโ โโโ โโโ โโโโโโโโโโโโโโโโโ โโโโโโโโ
โโโโโโ โโโโโโ โโโโโโโโ โโโ โโโ โโโโโโโโโโโโโโโโโ โโโโโโโโ
โโโ โโโโโโโโโโโ โโโ โโโ โโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โโโ โโโโโโโโโโโ โโโ โโโ โโโโโโโ โโโ โโโโโโโโโโโโโโโโโโโ
โฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌโฌ
๐ฎ A deep dive into what TBD Agent offers and how each capability works.
๐ค Custom Agents¶
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โโ PLAYER SELECT โโ ยท Build your squad โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Agents are the core building block. Each agent encapsulates:
- ๐ฌ System prompt โ defines the agent's personality, domain expertise, and behavioural constraints
- ๐ง Model โ which Copilot-supported model to use (e.g.
gpt-4.1,o3-mini,claude-sonnet-4.5) - ๐ง MCP servers โ which tool servers the agent has access to (by ID or tags)
Create as many agents as you need โ a code reviewer, an incident responder, a documentation writer โ each with their own configuration. Agents are reusable across workflows.
curl -X POST http://localhost:8000/api/agents \
-H "Authorization: Bearer $GITHUB_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "incident-responder",
"system_prompt": "You are an SRE investigating production incidents. Use Datadog to gather metrics and logs, then create a Jira ticket with your findings.",
"model": "gpt-4.1",
"mcp_server_ids": ["<DATADOG_MCP_ID>", "<JIRA_MCP_ID>"],
"mcp_server_tags": ["observability", "ticketing"]
}'
๐ง MCP Tool Integration¶
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โโ EQUIP ITEMS โโ ยท Power up with external tools โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
TBD Agent supports the Model Context Protocol (MCP) โ the open standard for connecting AI models to external tools.
โบ Supported transports¶
โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โโ TYPE โ โโ HOW IT WORKS โ
โโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ stdio โ Spawns a local process via npx; communicates over stdin/out โ
โ SSE โ Connects to a remote HTTP server via Server-Sent Events โ
โโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โบ Registering an MCP server¶
# โโ stdio-based โโ
curl -X POST http://localhost:8000/api/mcps \
-H "Authorization: Bearer $GITHUB_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "jira",
"transport_type": "stdio",
"connection_config": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-server-atlassian"],
"env": {"ATLASSIAN_API_TOKEN": "...", "ATLASSIAN_EMAIL": "...", "ATLASSIAN_URL": "..."}
},
"tags": ["ticketing", "project-management"]
}'
# โโ SSE-based โโ
curl -X POST http://localhost:8000/api/mcps \
-H "Authorization: Bearer $GITHUB_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "custom-tools",
"transport_type": "sse",
"connection_config": {
"url": "http://my-tool-server:3000/sse",
"headers": {"Authorization": "Bearer secret"}
},
"tags": ["internal"]
}'
โบ MCP Tags¶
Every MCP server can have tags โ free-form labels that categorise the server by domain or function (e.g. observability, ticketing, documentation, messaging).
Agents select which MCP servers to use in two ways:
- ๐ท๏ธ By ID โ explicit
mcp_server_idslist for known servers - ๐ท๏ธ By tag โ
mcp_server_tagslist; any MCP server matching at least one tag is included
Both are unioned at runtime with deduplication, so an MCP server that matches both by ID and by tag is only loaded once. This is how you support different "flavors of work" โ tag your Notion MCP as documentation, your Slack MCP as messaging, your Datadog MCP as observability, and then agents pick up the right tools by declaring the categories they need.
๐งฉ Skills¶
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โโ SKILL TREE โโ ยท Upgrade your agent's abilities โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Skills are reusable instruction modules that get injected into the system prompt at runtime. They let you shape agent behaviour without editing the agent's core prompt.
- Each skill has a name, instructions (free-text), and tags
- Skills are installed per-workflow, not per-agent โ so the same agent can behave differently in different contexts
# โบ Create a skill
curl -X POST http://localhost:8000/api/skills \
-H "Authorization: Bearer $GITHUB_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "rca-format",
"description": "Structures output as a Root Cause Analysis report",
"instructions": "Structure your final output as an RCA report with sections: Summary, Timeline, Root Cause, Impact, Remediation, Prevention.",
"tags": ["incident", "reporting"]
}'
# โบ Install it into a workflow
curl -X POST http://localhost:8000/api/workflows/<WF_ID>/skills/<SKILL_ID> \
-H "Authorization: Bearer $GITHUB_TOKEN"
โ๏ธ Workflows¶
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โโ GAME SESSION โโ ยท Where the action happens โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
A workflow ties an agent to a specific execution context:
- ๐ค Agent โ which agent to use
- ๐ง Model override โ optionally use a different model than the agent's default
- ๐ Max turns โ limit on tool-call rounds (prevents runaway loops)
- ๐ Output format โ
jsonormarkdown - โพ๏ธ Infinite session โ enable/disable automatic context compaction
- ๐งฉ Skills โ installed instruction modules
Workflows persist their full state: messages, logs, usage stats, and status.
โก Real-Time Streaming (SSE)¶
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โโ LIVE FEED โโ ยท Watch the magic unfold in real-time โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
When a prompt is sent, the agent runs on a Celery worker and publishes events to Redis. The API's SSE endpoint relays these events to any connected client.
โบ Event types¶
โโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โโ EVENT โ โโ WHAT IT CONTAINS โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ log โ Agent lifecycle: tool calls, errors, compaction, etc. โ
โ message โ Complete assistant or tool message โ
โ message_delta โ Streaming token โ live character-by-character rendering โ
โ usage โ Cumulative token counts, premium requests, and cost โ
โ status โ Workflow state changes (running โ completed/failed) โ
โโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โบ Connecting¶
# CLI
curl -N http://localhost:8000/api/workflows/<WF_ID>/stream
# JavaScript
const es = new EventSource('/api/workflows/<WF_ID>/stream');
es.onmessage = (e) => {
const { type, data } = JSON.parse(e.data);
// type: log | message | message_delta | usage | status
};
The built-in dashboard uses this SSE stream to render live logs, token-by-token message streaming, and real-time usage metrics.
โพ๏ธ Infinite Sessions¶
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โโ EXTRA LIVES โโ ยท Your agent never runs out of memory โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Long-running agents can exhaust a model's context window. TBD Agent uses the Copilot SDK's infinite session feature to handle this automatically:
- โบ At 80% context fill โ background compaction starts (SDK summarises older context)
- โบ At 95% โ buffer exhaustion mode kicks in for aggressive compaction
- โบ The agent continues working without interruption โ
This is enabled by default on new workflows and can be toggled off.
๐ Usage & Cost Tracking¶
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โโ SCORE BOARD โโ ยท Track every token and every penny โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Every workflow tracks cumulative usage data from the Copilot SDK:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โโ METRIC โ โโ DESCRIPTION โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ total_premium_requests โ Number of premium requests consumed โ
โ total_input_tokens โ Total input tokens sent to the model โ
โ total_output_tokens โ Total output tokens generated โ
โ total_cache_read_tokens โ Tokens read from prompt cache โ
โ total_cache_write_tokens โ Tokens written to prompt cache โ
โ total_cost โ Estimated cost in USD โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Usage is published in real-time via SSE and persisted to the workflow document in MongoDB. The dashboard displays these metrics live during execution.
๐ช Hooks & Error Recovery¶
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โโ CHEAT CODES โโ ยท Fine-grained control over the loop โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
The agent engine uses the Copilot SDK's hooks system for fine-grained control:
โโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โโ HOOK โ โโ BEHAVIOUR โ
โโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ on_pre_tool_use โ Logs tool invocation; denies if max turns exceeded โ
โ on_post_tool_use โ Logs result; injects goal reminder past 50% turns โ
โ on_error_occurred โ Retries recoverable errors up to 2ร, then aborts โ
โ on_session_end โ Logs session end reason โ
โโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
The permission handler enforces max turns by counting tool calls and returning denied-by-rules when the limit is exceeded.
๐ฅ๏ธ Dashboard¶
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โโ HOME SCREEN โโ ยท Your command center โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
TBD Agent ships with a Flutter dashboard at /dashboard that provides:
- ๐ Overview โ agent, MCP server, skill, workflow, and task status
- ๐ค Agent management โ create, edit, delete agents; assign MCP servers, custom tools, built-in tools, providers, and knowledge
- ๐ง MCP management โ register, update, test, inspect, and restrict MCP servers/tools
- ๐งฐ Custom tools โ view bundled/user tools, inspect schemas, and map token-backed environment variables
- ๐งฉ Skill management โ create and manage instruction modules
- ๐ง Knowledge โ manage knowledge source/item forms and API-backed records
- ๐ก๏ธ Guardrails โ configure prompt, request, and output policies
- ๐ Tokens and providers โ manage encrypted credentials and BYOK providers
- โ๏ธ Workflow management โ configure skills, guardrails, memory, repo, reasoning, and webhook settings
- โฑ๏ธ Scheduled agents โ run workflow prompts on a recurring cadence
- โถ๏ธ Run Task โ select a workflow, type a prompt, optionally set reasoning effort, and start asynchronous execution
- ๐ Task executions โ inspect history, logs, usage, details, progress, and stop active runs
- ๐ฌ Chat โ stream conversational messages with a selected agent
๐ Distributed Execution¶
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โโ MULTIPLAYER MODE โโ ยท Scale across the cluster โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
TBD Agent separates the API layer from agent execution via Celery + Redis:
- The API handles HTTP requests and SSE streaming โ lightweight and fast
- Workers handle the heavy lifting โ SDK sessions, tool calls, model inference
- Redis bridges them โ task queue for dispatch, pub/sub for real-time events
This means:
- โบ Scale workers independently โ add containers or increase concurrency based on workload
- โบ API stays responsive โ prompt dispatch is instant; no blocking on agent execution
- โบ Fault tolerance โ if a worker crashes,
task_acks_latere-queues the task; the workflow is marked as failed - โบ Multi-node โ workers can run on different machines, all connecting to the same Redis and MongoDB
See architecture.md for the full system diagram and scaling guide.
โฌโฌโฌ NAAICO โฌโฌโฌ