Develop
Integrations
On this page 7 sections
You don't need to write Zig to build on the ecosystem. Every component exposes a documented seam — a protocol or contract that outside software can implement. This page catalogs them, roughly in order of usefulness.
Bring your own worker (NullBoiler)
NullBoiler dispatches to anything that speaks one of its worker protocols:
| Protocol | Implement this if |
|---|---|
webhook |
You have an HTTP endpoint that accepts a task and returns a result |
openai_chat |
Your worker is any OpenAI-compatible gateway (set model in the worker config) |
api_chat |
Your worker exposes a chat-style API (ZeroClaw does) |
a2a |
Your worker speaks Google's A2A JSON-RPC (NullClaw does) |
| MQTT / Redis Streams | Declared in NullBoiler but stubbed as of v2026.5.29 — not yet functional |
A bundled bridge (tools/picoclaw_webhook_bridge.py) shows the webhook pattern for adapting a runtime that doesn't natively fit. Workers declare tags and capacity; the engine handles selection, retries, backoff and health checks.
Implement the tracker contract (NullTickets)
Any runtime becomes a NullTickets worker by implementing three moves: claim (POST /leases/claim by role, keep the lease heartbeated), report (append run events, attach artifacts), transition or fail (with optimistic expected_stage / expected_task_version checks). The full schema is served by the tracker itself at /openapi.json — agents are expected to bootstrap from it. See Durable backlog for the semantics.
Send telemetry (OTLP)
NullWatch (127.0.0.1:7710) and NullTickets (:7700) both accept OTLP/HTTP JSON on /v1/traces and /otlp/v1/traces. Anything that emits OpenTelemetry traces can use them as local sinks. For NullTickets, add nulltickets.run_id / nulltickets.task_id span attributes to link traces to tasks.
For NullWatch there is also a community Python SDK — nullwatch-python-sdk, zero required dependencies, with built-in eval scorers for RAG hallucination detection and tool-call schema validation.
Extend the agent (NullClaw)
- MCP servers. NullClaw is an MCP client over stdio and HTTP — the standard way to add tools without touching the binary.
- Skills. Packaged capabilities, installable from a registry:
nullclaw skills install <name>. - A2A v0.3.0. NullClaw exposes Google's agent-to-agent JSON-RPC, so external agents can call yours as a peer.
- ACP.
nullclaw acpspeaks the Agent Client Protocol over stdio for ACP-compatible editors; NullDesk drives NullClaw the same way. - Providers. Any OpenAI-compatible endpoint works via
custom:https://...— local inference servers included. - Vtable interfaces. In-tree, everything is swappable: providers, channels, tools, memory engines, tunnels, runtimes, peripherals (Arduino, Raspberry Pi GPIO, STM32).
Serve memory (NullPantry)
NullPantry exposes NullClaw-compatible memory routes (/v1/agent, /v1/memory, /v1/agent-memory, /v1/agent-sessions) — and conversely, its agent-memory layer proxies to 10+ external memory services (Mem0, Zep, Supermemory, Honcho and others) plus Redis, ClickHouse and Markdown workspaces. If you run a memory service, there may already be an adapter; backends are selected at compile time.
Join the hub (manifest contract)
A component becomes hub-manageable by publishing a nullhub-manifest.json describing install, config, launch, health checks and wizard steps, and by supporting --export-manifest / --from-json. NullWatch is the smallest worked example of the pattern.
Build UIs
Everything headless is deliberately headless so UIs can be thin:
nullhub api GET /api/... --pretty— the hub API, plus its reverse proxies to NullBoiler, the NullTickets store, and NullWatch.- nllclw's WebSocket channel (
ws://127.0.0.1:8765/ws?token=...) withchat,status,ping,closemessage types — made for custom dashboards. - NullWatch's query API for observability frontends; NullHub's Flight Recorder is one client of it, not the only possible one.