API Reference
Once you know the service, the rest of this page is reference
@lambda-curry/currykit-observability
Port: 18801 (deprecated)Legacy telemetry collector reference. Atlas keeps this section for older event API shapes, but current live telemetry and health interpretation now belong to OpenObserve plus Watchtower's expected-state registry.
Historical host surface: http://host.docker.internal:18801π Authentication
Authorization: Bearer $OBS_COLLECTOR_TOKENToken is set in agent container environment variables. Atlas treats this surface as deprecated legacy context now, so use it only for older collector-shaped requests and pair any live-health reading with OpenObserve plus Watchtower's expected-state model.
GET/events
Query telemetry events with filtering and pagination
Query Parameters
serviceΒ·stringβFilter by service name (bridge, recall, currybox-proxy, kokoro-proxy, delegation, scout)kindΒ·stringβEvent kind: event | health | metricsinceΒ·stringβISO 8601 timestamp - start of time rangeuntilΒ·stringβISO 8601 timestamp - end of time rangelimitΒ·numberβMax results to return (default: 100)Response Example
{
"events": [
{
"id": 123,
"ts": "2026-02-15T14:30:45.123Z",
"service": "bridge",
"kind": "event",
"event": "message.sent",
"level": "info",
"duration_ms": 234,
"meta": {
"from": "clawdy",
"to": "advisor",
"message_id": "abc123"
}
}
]
}GET/services
List all active services that have emitted events
Response Example
{
"services": [
"bridge",
"recall",
"currybox-proxy",
"kokoro-proxy",
"delegation",
"scout"
]
}POST/events
Emit a custom telemetry event (agents can track their own cycles)
Request Example
{
"service": "scout",
"kind": "event",
"event": "cycle.completed",
"level": "info",
"duration_ms": 45000,
"meta": {
"project": "atlas",
"tasks_completed": 3
}
}Response Example
{
"id": 124,
"ts": "2026-02-15T14:35:00.000Z"
}GET/health
Health check endpoint
Response Example
{
"status": "healthy",
"uptime_seconds": 86400,
"total_events": 15234
}@lambda-curry/currykit-recall
Port: 8790QMD semantic search and RAG service. Indexes LC team notes, documentation, and knowledge base. Powered by text-embedding-3-small.
http://host.docker.internal:8790π Authentication
Authorization: Bearer $RECALL_TOKENToken is set in agent container environment variables.
POST/search
Semantic search across indexed collections (LC notes, team info, etc.)
Request Example
{
"query": "How does agent delegation work?",
"collections": [
"lc-notes",
"lc-team"
],
"limit": 10,
"min_score": 0.7
}Response Example
{
"results": [
{
"collection": "lc-notes",
"document_id": "meeting-2026-02-10",
"chunk_id": "chunk_42",
"score": 0.89,
"text": "Agent delegation uses the Bridge service to route tasks...",
"metadata": {
"date": "2026-02-10",
"author": "jake"
}
}
]
}POST/embed
Generate embeddings for text (1536-dimensional vectors via OpenAI)
Request Example
{
"text": "Agent coordination patterns in the LC network"
}Response Example
{
"embedding": [
0.023,
-0.154,
0.089
],
"model": "text-embedding-3-small",
"dimensions": 1536
}GET/collections
List all indexed collections with metadata
Response Example
{
"collections": [
{
"name": "lc-notes",
"document_count": 234,
"chunk_count": 1872,
"last_sync": "2026-02-15T14:15:00Z"
},
{
"name": "lc-team",
"document_count": 12,
"chunk_count": 45,
"last_sync": "2026-02-15T14:15:00Z"
}
]
}@lambda-curry/currykit-currybox
Port: 18800Cloud sandbox proxy. Routes exec commands to Vercel microVMs for isolated, ephemeral compute.
http://host.docker.internal:18800π Authentication
Authorization: Bearer $CURRYBOX_TOKENProvides secure access to ephemeral compute environments.
POST/run
Execute a command in an isolated sandbox environment
Request Example
{
"command": "npm test",
"cwd": "/app",
"env": {
"NODE_ENV": "test"
},
"timeout_ms": 30000
}Response Example
{
"exit_code": 0,
"stdout": "All tests passed\n",
"stderr": "",
"duration_ms": 2341,
"sandbox_id": "vm_abc123"
}GET/status
Check sandbox service status and active VMs
Response Example
{
"status": "healthy",
"active_sandboxes": 2,
"total_runs_today": 47
}@lambda-curry/currykit-kokoro-proxy
Port: 8787Local text-to-speech service. High-quality neural voice synthesis for agent responses.
http://host.docker.internal:8787POST/tts
Generate speech audio from text
Request Example
{
"text": "Hello, this is Scout reporting from the Atlas project.",
"voice": "af_bella",
"format": "mp3",
"speed": 1
}Response Example
{
"audio_url": "/tmp/tts_abc123.mp3",
"duration_seconds": 4.2,
"format": "mp3",
"sample_rate": 24000
}GET/voices
List available TTS voices
Response Example
{
"voices": [
{
"id": "af_bella",
"name": "Bella",
"gender": "female",
"lang": "en-US"
},
{
"id": "am_adam",
"name": "Adam",
"gender": "male",
"lang": "en-US"
},
{
"id": "bf_emma",
"name": "Emma",
"gender": "female",
"lang": "en-GB"
}
]
}@lambda-curry/currykit-bridge
Port: βAgent-to-agent communication CLI. Enables cross-agent messaging and task delegation.
CLI only (no HTTP API)CLI Usage
Bridge is accessed via the `bridge` CLI tool, not HTTP. Available in agent containers that have bridge access configured. The current wrapper uses Bridge v1 verbs: call, interject, watch, result, cancel, and list. Legacy aliases remain only for compatibility.
Call an agent and wait for a bounded result
bridge call clawdy 'What should I work on next?' --jsonDetach work and inspect it later
bridge call scout 'Audit the API Reference for one concrete drift.' --detach --json
bridge watch <turnId> --resume --json
bridge result <turnId> --jsonContinue or stop an existing turn
bridge interject <sessionKey> "Focus on the service-directory examples."
bridge cancel <turnId> --reason "stale" --jsonBridge Targets
@lambda-curry/currykit-rag-sync
Port: βKnowledge sync pipelines. Pulls from Notion, Jira, Linear and feeds Recall service.
Cron-based pipeline (no API)Pipeline Overview
RAG Sync runs as scheduled cron jobs, pulling data from external sources and indexing into Recall. No direct API access.
Notion
Every 15 minutesTeam notes, meeting docs, architecture decisions
Jira
Every 30 minutesProject tickets, sprint planning, issue tracking
Linear
Every 30 minutesEngineering tasks, bugs, feature requests
@lambda-curry/currykit-notion
Port: βMarkdown-to-Notion conversion tool. Converts structured Markdown documents into Notion pages with proper block formatting, headings, callouts, and code blocks. Used by agents to publish documentation, meeting notes, and research into the team's Notion workspace.
CLI + library (no HTTP API)CLI Usage
Agents use currykit-notion to publish Markdown content to Notion programmatically β useful for syncing agent-generated documentation without manual copy-paste.
Publish a Markdown file to a Notion page
currykit-notion publish --file ./output.md --page-id <NOTION_PAGE_ID>Append Markdown content to an existing page
currykit-notion append --file ./update.md --page-id <NOTION_PAGE_ID>Library import (TypeScript)
import { markdownToNotion } from "@lambda-curry/currykit-notion";
const blocks = markdownToNotion(markdownString);
// blocks β Notion block array, ready for notion.pages.create()Supported Markdown
- β Headings (H1βH3) β Notion heading blocks
- β Paragraphs, bold (
**text**), italic (*text*or_text_), inline code - β Bold+italic (
***text***), strikethrough (~~text~~) - β Fenced code blocks with language hints
- β Bullet lists and numbered lists
- β Blockquotes β Notion callout blocks
- β Tables β Notion table blocks
π Env Requirements
NOTION_API_KEY=secret_...Uses the Notion internal integration token. The integration must be added to any page you want to write to.
@lambda-curry/currykit-delegate
Port: βTracks coding task delegations to external agents like Codex. Emits lifecycle events for each delegation: started, completed, failed. Query via the Observability collector.
Observability events only (no HTTP API)Event Schema
Delegation emits telemetry events to the Observability collector. Query them viaGET /events?service=delegation
delegation.started
{
"service": "delegation",
"kind": "event",
"event": "delegation.started",
"meta": {
"task": "implement feature X",
"agent": "codex",
"project": "atlas"
}
}delegation.completed
{
"service": "delegation",
"kind": "event",
"event": "delegation.completed",
"duration_ms": 45000,
"meta": {
"task": "implement feature X",
"agent": "codex",
"files_changed": 3
}
}delegation.failed
{
"service": "delegation",
"kind": "event",
"event": "delegation.failed",
"meta": {
"task": "implement feature X",
"agent": "codex",
"error": "timeout after 300s"
}
}Cost Tracker (currykit-observability)
Port: βMonitors API usage costs across all agents. Runs every 6 hours, emits cost summaries to the Observability collector, and generates alerts when spend approaches budget thresholds.
Cron-based (no HTTP API)How to Query Costs
Cost-tracker emits a tracking.completed event every 6 hours. Query historical spend via Observability:
curl "/events?service=cost-tracker&limit=10" -H "Authorization: Bearer $OBS_TOKEN"
Tracked Metrics
- β Daily and monthly token spend per agent
- β Model breakdown (GLM vs. GPT vs. Codex)
- β Cost per session and per cycle
- β Budget threshold alerts (Slack notification when 80% reached)
Monitor Service (currykit-observability)
Port: βScheduled health monitoring service. Runs every 2 hours to verify agent availability and service health. Emits monitoring.completed events with system status snapshots.
Cron-based (no HTTP API)Monitor Schedule
monitoring.completed
Every 2 hours{
"service": "monitor",
"kind": "event",
"event": "monitoring.completed",
"meta": {
"agents_healthy": [
"clawdy",
"scout",
"currybot",
"atticus"
],
"services_healthy": [
"bridge",
"recall",
"observability"
],
"alerts": []
}
}Query recent monitor runs: GET /events?service=monitor&limit=5
Codex Telemetry (currykit-observability)
Port: βTracks Codex CLI invocations and coding agent telemetry. Every time Scout delegates a coding task to Codex, usage is logged here for cost tracking and audit purposes.
Observability events only (no HTTP API)Usage Pattern
Codex telemetry integrates with the Observability collector. Query invocation history:
curl "/events?service=codex&limit=20" -H "Authorization: Bearer $OBS_TOKEN"
π What's Tracked
- β Invocation count and duration per session
- β Files changed per run (insertion/deletion counts)
- β Success/failure rate and error categories
- β Token usage (maps to cost-tracker for spend analysis)
OpenClaw Gateway
Port: Various (Clawdy gateway on minip3 via the 18789 ssh forward, Currybot team gateway, Scout 18811, Meg 18814, Atticus 18805, Grafton 18805, Samwise 18811 β shared instances: Scout+Samwise on 18811, Dexter+Buzz+Meg on 18814, Atticus+Grafton on 18805)Each agent's OpenClaw gateway provides REST APIs for session management, cron jobs, and messaging.
http://host.docker.internal:<port>β οΈ Agent-Specific APIs
These APIs are agent-specific. Each agent has its own gateway with its own port. Auth tokens are unique per agent.
GET/api/sessions/list
List active and recent sessions
Query Parameters
limitΒ·numberβMax sessions to returnkindsΒ·string[]βFilter by session kind (main, isolated)Response Example
{
"sessions": [
{
"key": "main",
"kind": "main",
"agent": "scout",
"created": "2026-02-15T08:00:00Z",
"lastActive": "2026-02-15T14:30:00Z"
}
]
}GET/api/cron/list
List scheduled cron jobs
Response Example
{
"jobs": [
{
"id": "atlas-cycle",
"name": "Atlas Cycle",
"schedule": {
"kind": "cron",
"expr": "8 */4 * * *"
},
"enabled": true,
"nextRun": "2026-02-15T15:30:00Z"
}
]
}POST/api/cron/wake
Send a wake event to trigger agent attention
Request Example
{
"text": "Check on the Atlas deployment status",
"mode": "next-heartbeat"
}Response Example
{
"status": "queued"
}Keep endpoint work bounded
Always include auth headers
All services require bearer tokens. Check your environment variables.
Use appropriate timeouts
Recall search can take 1-2s. Currybox runs may take 10-30s. Set HTTP client timeouts accordingly.
Log all service calls
Emit structured observability events so OpenObserve captures the signal and Watchtower can interpret it against expected state.
Handle errors gracefully
Services may be temporarily unavailable. Implement retries with exponential backoff.
Check Watchtower for live service status
Before debugging, verify services are healthy in the observability dashboard.