Mirror of the public Nokido wiki (source of truth: https://github.com/Nokido-labs/nokido/wiki/06-Hub-API-Reference). Edits belong there.
Updated: 2026-08-27
The hub exposes 49 MCP tools (ring 1) + REST endpoints on :8766. Dynamic/forged
tools (dyn_*, forge_call_dynamic, forge_list_dynamic_tools, forge_spawn_swarm)
are generated at runtime and not listed here by nature; owner-only tools (agy_*) are
gated by RBAC.
/mcp)Every call follows :
{
"jsonrpc": "2.0",
"id": <int>,
"method": "tools/call",
"params": {
"name": "<tool>",
"arguments": { ... }
}
}
runGit, Python, shell, trusted_script, GitHub, atlas, snapshot.
action: github|python|shell|trusted_script|atlas_build|save_situation|atlas_get|make_snapshot|setup_check|restart_claude|audit_log|worker_statuscode (shell|python) / commands[] (parallel shell) / path (trusted_script) / script_args.sandbox: local|docker|ps_clm|windows|wasm, container, timeout.readRead a file or tail logs.
action: file|tail_logspath, lines, pattern.read_function_bodyExtract a single function/class from a file (AST-precise).
file_path, function_name.querySQL on RAG/embeddings.db (ring 0 only â use rag for ring 2+).
sql.FORGE_QUERY_MAX_ROWS (200) via fetchmanyLIMIT â preserves subqueries / UNION / aggregates).LIMIT / WHERE / aggregate.governed_editGoverned in-process file edit (AST + secret scan + tree-lock claim). Writes where the
sandbox is ACL-blocked. RING_0.
path, content (full write) or blocks (Aider SEARCH/REPLACE, ~-80% tokens).get_file_skeletonAST skeleton of a Python file : imports + class/function signatures, bodies elided.
file_path.get_function_dependenciesJIT function-level call-graph : callees + callers of a function.
function_name, file_path.oracle_python_replSandboxed Python REPL for pure compute / sqlite / urllib.
code.forge_statsRuntime observability : GOAP plan-cache hit-rate, event-loop lag sentinel, resources
(ram/cpu/gpu). Read-only.
ragHybrid retrieval.
action: index|searchtopic, limit.web_searchSearXNG.
query, max_results.crawlFetch a URL â clean markdown (trafilatura), firewalled against indirect
prompt injection (firewall_web). Pages over ~10k chars are indexed into the
RAG locally (NPU) and a short pointer is returned instead of the raw dump
(token-frugal). For non-MCP host CLIs, see the :7779 egress gateway
(Web Egress Gateway).
url, timeout.research_agentZero-token agent loop : SearXNG â Groq â RAG ingest.
objective, max_rounds, max_urls, domain, provider.biblioBibliography worker.
action: extract|search|list|promote|reject|pin|unpin|gettext, idea_id, entry_id, reason, status_filter, limit.forge_deep_exploreSovereign local code recon (0 cloud token, file:line digest). Use before native
search/read on Nokido code.
intent, target, globs, breadth: narrow|medium|wide.askRPC to an LLM provider (single shot).
provider: claude|gemini|groq|ollama|gpt4o_github|gemini_cli|claude_agent_sdk|claude_cli|... or auto.message, thread_id, max_tokens, rag_context (bool).route_dtDecision-Tree routing (predict optimal provider for a prompt).
prompt, task_type.route_taskRoute a task to a free-tier LLM (ollama/gemini/groq).
task_type, payload.hubHub state & utilities.
action: get_mode|set_mode|poll|notify|list_providers|search_recent|whoami|emit_telemetry|quota_model|quota_reportmode, message, to: claude|gemini|cline|daemon|hub, topic, limitflash|flash_lite|pro|preview_pro (quota_report %), quality|apply (quota_model).taskTask lifecycle.
action: assign|claim|result|statustask_id, job_id, description, agent, intent, priority, result.eventEventBus.
action: publish|historytopic, kind, data, topics[], limit.bundleBatch multiple primitive MCP tool calls in one round-trip.
calls: [{tool, args}, ...].planGOAP planner â decompose a goal into JSON-RPC steps.
goal, ring_max, context.blackboard_read_zoneRead one zone of the swarm blackboard (shared working memory).
zone_name (mission|architecture_rules|discovered_facts|active_bugs|scratch), filter.blackboard_propose_factPropose an atomic fact into a zone (idempotent by key, ACL by ring).
zone_name, fact, category, trust, key.orchestrateLocal agentic loop : Qwen2.5-Coder via llama-server orchestrates MCP tools
autonomously. Loops tool_calls until finish_reason=stop.
task, tools[] (whitelist), max_iter, model, temperature.loop_orchestrateAutonomous loop via GOAP + autonomous_loop_state table.
pattern (e.g. health_check, git_hygiene), max_steps.skillCentralized skills (DB + filesystem).
action: list|load|search|ingestname, query, limit.tool_scopeDynamic MCP catalogue scoping (anti context-bomb) : reduce tools/list to the group
matching an intent.
action: set|clear|status, intent, target_agent.auto_testRun / generate tests for a module (AST-validated).
filepath.trigger_autonomous_evolutionTrigger one autonomous evolution cycle (self-improvement loop).
forge_trigger_auditTrigger a forge audit cycle (health / integrity).
netcfgnetcfg-agent dispatcher (multi-vendor config).
action: ping|vendors|list_equipments|get_dashboard|topology|audit|verify_chain|preview_deploy|open_terminal|export_topology|vendor_search|vendor_statsshape_id, command, wait_ms, format (d2|drawthe|mermaid), query, vendor, limit, db_path, scale_m_per_px.manage_forge_lifecycleNSSM lifecycle for Nokido organs.
organ_name, action: START|STOP|RESTART|STATUSpriority: LOW|NORMAL|HIGH.cross_platform_fsMove/copy files between Windows â Docker â WSL.
action: copy_to_docker|copy_from_docker|copy_to_wslsrc, dest, distro.nokido_ensure_serviceDeclare a service's desired state; the hub owns the privileges (SeTcbPrivilege, daemons,
containers). You are a client : declare intent, the hub makes it true.
service (docker|searxng|hub|ollama|netcfg|webhub|graph|embed|lmstudio|Nokido<Name>),desired_state: running|stopped|restarted.docker_actionGoverned Docker actions (default-deny sovereign broker, LaForgeTrusted context).
argv (list without the word docker, e.g. ["ps","-a"]), timeout.graph_edge_scoreEdge score in the code graph.
src, dst, edge_type: import|call|inherit|embed_simmetadata (sim, deprecated).graph_cve_propagateBFS propagation of a CVE through the dep graph.
cve_id, entry_module, max_depth.graph_pprPersonalized PageRank.
seed, alpha, depth./mcp)| Method | Path | Purpose |
|---|---|---|
| GET | /health |
Liveness probe (returns version + ts). |
| GET | /.well-known/{path} |
OAuth discovery (MCP spec compliance). |
| POST | /mcp |
The JSON-RPC MCP endpoint (above). |
| POST | /admin/restart |
Trigger NSSM restart (ring 0). |
| POST | /admin/ingest_repo |
Ingest a git repo into RAG. |
| POST | /admin/run_job |
Detached job (returns job_id). |
| GET | /admin/job/{job_id} |
Poll job status. |
| GET | /admin/providers |
LLM provider admin UI. |
| GET | /api/providers |
JSON list providers + status. |
| POST | /api/providers/{name}/key |
Set API key into vault. |
| DELETE | /api/providers/{name}/key |
Remove API key. |
| POST | /api/providers/{name}/test |
Health-check. |
| GET | /forge/rag |
RAG explorer UI. |
| GET | /api/rag/stats |
RAG stats JSON. |
| POST | /api/rag/tokenize |
Tokenize text. |
| GET | /api/rag/stream |
SSE stream of recent RAG inserts. |
| GET | /forge/network |
Network log UI. |
| GET | /api/network/stream |
SSE stream of MCP traffic. |
| GET | /api/network/history |
Network history JSON. |
| GET | /api/mcp/servers |
List MCP servers (claude_desktop_config view). |
| POST | /api/mcp/toggle |
Enable/disable an MCP server. |
| GET | /forge/watch |
Watch jobs UI. |
| GET | /api/watch/jobs |
Watch jobs JSON. |
| POST | /orchestrate/loop |
Manual orchestrate loop trigger. |
| GET | /api/swarm/health |
Swarm health overview. |
| GET | /api/loops/status |
Autonomous loops status. |
| POST | /api/maintenance/gc |
Glymphatic GC (admin token required). |
| POST | /api/sandbox/spawn |
Spawn Docker sandbox. |
| GET | /api/sandbox/runtimes |
List runtimes. |
| GET | /api/audit/recent |
Recent audit log. |
| GET | /api/audit/trace/{trace_id} |
Trace by ID. |
| GET | /api/ring_buffer/stats |
Ring buffer stats (NANO). |
Authorization header missing / wrong token.Origin not allowed, or ring insufficient.error object).{
"jsonrpc": "2.0",
"id": <int|null>,
"error": {
"code": -32600,
"message": "Invalid Request",
"data": {"validation_errors": [...]}
}
}
Standard codes :
-32700 Parse error-32600 Invalid Request-32601 Method not found-32602 Invalid params-32603 Internal errorexplanation field (optional duringLAFORGE_EXPLANATION_MODE=error) âaction discriminator to keep the tool count manageable{"content":[{"type":"text","text":"..."}]}..get() (the hub returns error insteadresult on exceptions â never d["result"] direct).run, exegol, browser,ctf_browser, netcfg) over FORGE_TOOL_OUTPUT_CAP (12k chars) are truncatedread, ask, rag, research_agent, crawl, âĶ) and valid JSON are neverFORGE_TOOL_OUTPUT_CAP=0.traceparent (W3C) header to thread a trace_idGET /api/audit/trace/{trace_id}.