This repository is a centralized orchestration hub for deploying, sandboxing, and monitoring local AI assistants, speech-to-text engines, local inference models, and communication integrations. It provides systemd-confinement configurations, bubblewrap (bwrap) isolation wrappers, and standardized daemon control utilities (*-ctl scripts) to ensure secure and isolated agent execution on Linux while facilitating structured inter-agent collaboration.
See Current Weekly Development Status for GIT development.
| Assistant | Language & Runtime | Embedding | Reranking | Search & Retrieval | Signal | STT |
|---|---|---|---|---|---|---|
| ZeroClaw | Rust (Source) Rust Backend + Web GUI |
Remote & Local | Hybrid & Local | SQLite Hybrid (Vector & FTS5) | Native | Local |
| IronClaw | Rust (Source) Rust Backend + Web GUI |
Remote & Local | Native (RRF) | PostgreSQL + pgvector / Hybrid (FTS + Vector) | Native | Local |
| Hermes | Python (Source) frozen Python Backend + Web GUI |
Remote & Local | Native & Local | SQLite FTS5 / Vector / RAG | Native | Local |
| NanoBot | Python (Source) Python CLI (via uv) |
Remote & Local | Via MCP Tool | RAG / Document Store / MCP | Native | Local |
also covered, but currently not point of interest:
| Assistant | Language & Runtime | Embedding | Reranking | Search & Retrieval | Signal | STT |
|---|---|---|---|---|---|---|
| LibreFang | Rust (Source) Rust Backend + Web GUI |
Remote & Local | Native & Local | SQLite & Vector / MCP | Native | Local |
| Moltis | Rust (Source) Rust Backend + Web GUI |
Remote, Local & QMD | Native (QMD) & Local | SQLite FTS5 / Vector / Hybrid (QMD) | Native | Local |
| PicoClaw | Go (Source) Go Backend + Web GUI |
Remote & Local via MCP | Via MCP | JSON state / MCP | No | Via MCP |
| NanoClaw | TypeScript (Source) Node.js Webhook Backend |
Remote & Local via Tools | Via Custom Skills/MCP | SQLite state / Custom Tools / MCP | No | Via Custom Tools |
- Description: Manages persistent
llama-serverinstances for text completions (local-llm-ggml.sh). - Sandboxing: Requires
PrivateDevices=noto access/dev/driand/dev/kfd. EnforcesProtectSystem=strictwhile bind-mounting the user's home configuration and granting read-write access to/data/public/machine-learning. - Features: Chat completions (
50080) running with 3 parallel slots (80,000 tokens context size each, total 240,000 tokens). - Documentation: local-llm-ggml.md
- Description: Manages persistent
llama-serverinstances for text embeddings (local-embedding.sh). - Sandboxing: Requires
PrivateDevices=noto access/dev/driand/dev/kfd. EnforcesProtectSystem=strictwhile bind-mounting the user's home configuration and granting read-write access to/data/public/machine-learning. - Features: Standalone text embedding server (
50082) running with mean pooling and ROCm GPU offloading. - Documentation: local-embedding.md
- Description: Manages persistent
llama-serverinstances for document reranking (local-rerank.sh). - Sandboxing: Requires
PrivateDevices=noto access/dev/driand/dev/kfdfor GPU-accelerated synthesis (unless run in cpu only mode). EnforcesProtectSystem=strictwhile restricting filesystem access to the home directory and read-only system files. - Features: Rerank Service (
50086) services. - Documentation: local-rerank.md
- Description: Manages a persistent
whisper-serverinstance for speech-to-text (STT) transcription. Serves an OpenAI-compatible audio transcription API on port 50090. - Sandboxing: Requires
PrivateDevices=noto access/dev/driand/dev/kfdfor GPU-accelerated synthesis (unless run in cpu only mode). EnforcesProtectSystem=strictwhile restricting filesystem access to the home directory and read-only system files. - Features: audio transcoding using
ffmpeg. - Documentation: local-speech-to-text.md
- Description: Manages a persistent
qwen3-tts-serverinstance for text-to-speech (TTS) synthesis. Serves an OpenAI-compatible audio synthesis API on port 50095. - Sandboxing: Requires
PrivateDevices=noto access/dev/driand/dev/kfdfor GPU-accelerated synthesis (unless run incpu-onlymode). EnforcesProtectSystem=strictwhile restricting filesystem access to the home directory and read-only system files. - Features: Dynamic performance tuning modes (
gpu+max-throughput,gpu+min.vram,cpu-only), fully parallelized CPU threading, and streaming/batch PCM generation. - Documentation: local-text-to-speech.md
- Description: Connects agents to Signal. Runs a
signal-clidaemon exposing both TCP and HTTP JSON-RPC interfaces. It also provides an optional Go-based REST API wrapper for robust, HTTP-based polling/webhook integrations (like linking LibreFang). - Sandboxing: Standard filesystem hardening, but disables
MemoryDenyWriteExecutebecause the underlying JVM (Java) requires it for JIT compilation. - Features: Account linking via QR code, dual daemon interfaces, and isolated home directory execution to prevent contamination.
- Documentation: signal-ctl.md
The following assistants have native Signal channel integration available in their source code:
To configure them, refer to their specific configuration sections in their respective control guides.
The repository contains several scripts under scripts/ to assist with sandboxing, benchmarking, downloading models, and calibrating agent runtimes.
For details, see the scripts/README.md.
The following default ports are used by various agent systems and services to avoid conflicts. When integrating new agents, ensure their configured PORT or WEBHOOK_PORT does not overlap with existing infrastructure.
| Agent/Service | Default Port(s) | Description / Protocol |
|---|---|---|
| Local-LLM | 50080 | Llama-server serving Chat/Vision LLM (embeddings disabled) |
| Local-Embedding | 50082 | Llama-server serving Text Embeddings |
| Local-Rerank | 50086 | Llama-server serving Document Reranking |
| Local-Speech-To-Text | 50090 | Whisper-server audio transcription API (HTTP) |
| Local-Text-to-Speech | 50095 | Qwen3-tts-server audio synthesis API (HTTP) |
| Signal-CLI | 50889 (optional: 50887, 50888) |
REST API (TCP/HTTP JSON-RPC disabled by default in favor of secure UNIX socket) |
| ZeroClaw | 42617 | ZeroClaw Gateway |
| IronClaw | 8080 | IronClaw Web Gateway & HTTP Webhooks |
| Hermes | 8000, 8642, 9119 | Hermes Messaging Gateway (API: 8642, UI: 9119) |
| NanoBot | 8790 | NanoBot Gateway API |
| LibreFang | 4545 | LibreFang daemon API (HTTP) |
| Moltis | 13131 | Moltis agent server Web UI/API (HTTPS) |
| PicoClaw | 18790, 18800 | Gateway (HTTP/Webhook) & Launcher Web UI |
| NanoClaw | 3000 | Webhook Server |
Agent runtimes in this repository operate under strict, layered sandboxing configurations via systemd user services to protect the host system while allowing agents to execute their tools securely.
Two primary isolation profiles are used across all assistants:
Used by agents that execute tools directly or do not require creating new user namespaces for their internal sandboxing.
ProtectProc=invisibleandProcSubset=pid: Hides other system processes.RestrictNamespaces=yes: Prevents the creation of new namespaces.MemoryDenyWriteExecute=yes: Prevents W^X memory mappings (unless specifically required by an interpreter).PrivateTmp=yes,ProtectSystem=strict,PrivateDevices=yes: Standard filesystem hardening.
Used by agents that orchestrate sub-agents or use tools like Bubblewrap (bwrap), Rootless Podman, or Docker for internal sandboxing.
RestrictNamespaces=yesis omitted to allowbwrapor Podman to createCLONE_NEWUSERandCLONE_NEWNSunprivileged namespaces.ProtectProc=invisibleandProcSubset=pidare omitted sobwrapcan securely bind its own/procfilesystem.NoNewPrivileges=yesis maintained for modernbwrapcompatibility.PrivateDevicesmay be disabled (no) if access to the container daemon or GPU devices is required.
- Major Features: Rust-based security-focused agent gateway and runtime featuring built-in SQLite hybrid memory (vector + keyword FTS5) and native Landlock/Bubblewrap sandbox backends.
- Language/Runtime: Rust (Source) / Compiled binary (Rust Backend, no Web GUI).
- Requirements: Support for Linux namespace isolation or Landlock.
- Sandboxing: Relaxed Namespaces Profile is enforced via the systemd unit so that ZeroClaw can spawn secure nested sub-sandboxes via
bwrapinternally. - Memory: Native SQLite-based memory system. Supports
sqliteandsqlite-hybrid(vector + keyword FTS5) natively; can also use PostgreSQL or Qdrant. - Retention/Compression/Compaction: Features time-decay scoring (evergreen Core category, time-decayed Conversation/others with a 7-day half-life), two-phase LLM-driven memory consolidation (Daily history + Core fact extraction) at the end of each turn, and periodic memory hygiene (every 12 hours) to archive, purge, and prune database rows.
- Search & Retrieval: Native hybrid search (0.7 vector similarity / 0.3 keyword FTS5) directly inside SQLite.
- Autonomous 24/7 Support: Yes — Built-in scheduling and task memory for unattended 24/7 operations.
- Signal Support: Yes — Native channel integration communicating via the Go REST API wrapper (port 50889).
- Coding Agent Support: Yes — Natively supports OpenCode as a coding worker tool (
opencode_cli). - Local LLM & Inference: Supports local GGUF models via OpenAI-compatible endpoints served by
local-llm-ggml(port 50080) or Ollama. - Embedding Options: Local embeddings using the
local-llm-ggmlserver (port 50080) or Ollama, or OpenAI-compatible embedding APIs. - Reranking Support: Native weighted hybrid search, or routes to external local-rerank service (
http://localhost:50086/v1/rerank). - STT/TTS Support: Natively routes voice uploads to local Whisper server (
local-speech-to-texton port 50090) and local TTS via Qwen3-tts (local-text-to-speechon port 50095). - Agent Client Protocol: Yes — Native stdio-based ACP server via
zeroclaw-acp-bridgeand a dedicatedAcp(Code) pane in thezerocodeTUI. - Agent to Agent Protocol: Yes — Built-in peer-to-peer delegation via the
delegatetool, restricted by shared risk profiles anddelegation_policyconfigurations. - Detailed Guide & Onboarding: zeroclaw-ctl.md
- Major Features: Security-focused Agent OS providing WASM-sandboxed tool execution, credential protection with leak detection, prompt injection defense, and endpoint allowlisting. Built as a Rust reimplementation of OpenClaw with a focus on privacy, zero-trust architecture, and self-expanding capabilities via dynamic WASM tool building.
- Language/Runtime: Rust (Source) / Compiled binary (Rust Backend + Web Gateway GUI).
- Requirements: PostgreSQL 15+ with pgvector extension. Rust 1.92+ for source builds. NEAR AI account for default authentication.
- Sandboxing: Relaxed Namespaces Profile to support WASM sandbox execution (wasmtime) and optional Docker sandbox orchestrator/worker pattern.
MemoryDenyWriteExecute=norequired for WASM JIT compilation. - Memory: PostgreSQL 15+ database with the
pgvectorextension. Workspace filesystem provides flexible path-based storage for notes, logs, and context. Identity files maintain settings and contexts. - Retention/Compression/Compaction: Context compaction supports auto-summarization of history. Settings and metadata are persisted in PostgreSQL.
- Search & Retrieval: Hybrid search combining full-text search and vector similarity via Reciprocal Rank Fusion (RRF) backed by PostgreSQL.
- Autonomous 24/7 Support: Yes — Heartbeat support (
HEARTBEAT_ENABLED) for background tasks and cron jobs. - Signal Support: Yes — Native integration communicating via the
signal-cliHTTP daemon (port 50889). - Coding Agent Support: Yes — Supports external coding agents via Agent Client Protocol (e.g.
ironclaw acp add goose). No native OpenCode support. - Local LLM & Inference: Supports local GGUF models via OpenAI-compatible endpoints served by
local-llm-ggml(port 50080) or Ollama. - Embedding Options: Local embeddings using the
local-llm-ggmlserver (port 50080) or Ollama, or remote/Ollama embeddings. - Reranking Support: Native Reciprocal Rank Fusion (RRF) algorithm. No external reranker required.
- STT/TTS Support: Local STT via OpenAI-compatible transcription endpoint (
local-speech-to-texton port 50090). No native TTS support. - Agent Client Protocol: Yes — Configurable external coding agents using ACP commands (e.g.
ironclaw acp add goose). - Agent to Agent Protocol: Yes — Orchestrator/worker pattern for RPC-based sub-agent execution, and NEAR AI multi-agent routing.
- Detailed Guide & Onboarding: ironclaw-ctl.md
- Major Features: Messaging Gateway designed for agent-to-agent and agent-to-human integration. Features an OpenAI-compatible API and a Dashboard Web UI. Supports graceful shutdowns and nested container execution.
- Language/Runtime: Python (Source) / private 3.11 Python Runtime /opt (Web-based Dashboard GUI).
- Requirements:
~/.local/sandbox/hermesfor persistent state,~/agent-sharedfor integration. Can integrate with podman/docker backend. - Sandboxing: Utilizes the Relaxed Namespaces Profile to support nested
bwraporchestration. IsolatedHOMEdirectory redirection. - Memory: Built-in SQLite-based SessionDB/State management. Keeps localized context via
MEMORY.mdandUSER.mdprompt injections. Context compaction (ContextCompressor) supports tool output pruning (removes screenshots, replaces outputs with 1-line summaries), token-budget tail protection, and iterative summary updates (LLM summarizes middle turns). Offline trajectory compressor (trajectory_compressor.py) compresses trajectories under a target budget (default 15,250 tokens) for model training. - Search & Retrieval: SQLite FTS5 for keyword search, plus vector search using the
sqlite-vecextension. Direct integrations with external vector databases (Qdrant, Chroma) and memory frameworks (Mem0, Honcho). - Autonomous 24/7 Support: Yes — Built-in cron scheduler with platform delivery. Background batch and SWE runners (
batch_runner.py/mini_swe_runner.py). - Signal Support: Yes — Native integration connecting to a local
signal-cliHTTP daemon (port 50888/50889). - Coding Agent Support: Yes — Supports Claude Code, Codex, and OpenCode via bundled skills.
- Local LLM & Inference: Supports local GGUF models via
local-llm-ggml(port 50080) or Ollama. - Embedding Options: Local embeddings via
local-llm-ggml(port 50080) or Ollama, or remote embedding providers (OpenAI, Cohere, Jina, Voyage AI). - Reranking Support: Native reranking via auxiliary model slots and QMD hybrid retrieval engine, or routes to external reranker (
http://localhost:50086/v1/rerank). - STT/TTS Support: Local STT via local Whisper server (
local-speech-to-texton port 50090). No native TTS support. - Agent Client Protocol (ACP): Yes — Native stdio-based ACP server adapter (
acp_adapter/server.py) for editor integrations (VS Code, Zed, JetBrains). - Agent to Agent Protocol: Yes — Supports spawning isolated subagents for parallel workstreams and calling tools/subagents via RPC.
- Detailed Guide & Onboarding: hermes-ctl.md
- Major Features: Lightweight python service built with
uvfeaturing an onboarding setup wizard, a structured two-stage memory system ("Dream"), and Bubblewrap tool confinement. - Language/Runtime: Python (Source) / Python runtime managed by
uv(Python CLI + Setup Wizard, no Web GUI). - Requirements:
uvpackage manager installed. - Sandboxing: Relies on the Relaxed Namespaces Profile because it natively spawns agent code wrapped in nested
bwrapisolation. IsolatedHOME. - Memory: Two-stage memory system. Active conversation buffers in session jsonl files, and long-term memory in a file-based
MEMORY.md(and persona/user preferences inSOUL.md/USER.md). Auto-versioned via GitStore. Auto-compaction of idle sessions viaAutoCompactbased onsession_ttl_minuteslimit (keeps last 8 messages, archives the rest into session metadata). Context-length/token-triggered memory consolidation (maybe_consolidate_by_tokens) during active turns loops to archive message chunks tohistory.jsonl. Ephemeral background "Dream" loop readshistory.jsonl(tracked via.dream_cursor) and runs an ephemeral agent to synthesize and updateMEMORY.md,SOUL.md, orUSER.mdwith auto-commits via Git. - Search & Retrieval: Vector similarity search (RAG) for long-term memory. Document Store for indexing and searching local files (PDFs, TXT, markdown). External search via MCP tools (Brave Search).
- Autonomous 24/7 Support: Yes — Periodic background "Dream" loop and cron tasks.
- Signal Support: Yes — Native integration via HTTP Server-Sent Events (SSE) (port 50888) with markdown-to-Signal formatting.
- Coding Agent Support: None (No OpenCode support).
- Local LLM & Inference: Routes to local GGUF models via
local-llm-ggml(port 50080) or Ollama. - Embedding Options: Local embeddings via
local-llm-ggml(port 50080) or Ollama, or remote embeddings. - Reranking Support: No native reranking. Integrates with external reranker via custom MCP tools.
- STT/TTS Support: Local STT via local Whisper server (
local-speech-to-texton port 50090). No native local TTS. - Agent Client Protocol (ACP): No ACP support.
- Agent to Agent Protocol: Yes — Background subagent spawning (
SubagentManager) communicating asynchronously via the message bus (MessageBus/InboundMessagesystem injection). - Detailed Guide & Onboarding: nanobot-ctl.md
- Major Features: Hardened Agent OS daemon providing isolated execution environments and coordinating complex multi-agent workflows. It is a community fork of the former OpenFang project.
- Language/Runtime: Rust (Source) / Compiled binary (Rust Backend + Web-based Dashboard GUI).
- Requirements:
~/.local/sandbox/librefangand~/agent-shared. - Sandboxing: Relaxed Namespaces Profile to support bubblewrap (
bwrap) nested sandboxing for sub-agents. Read-only system paths and strict filesystem protection for the host. - Memory: SQLite-based memory system and vector storage for persistent agent memories and knowledge. Custom configuration workspace.
- Retention/Compression/Compaction: Context limit handling: automatically extracts facts and summarizes history when approaching context limits.
- Search & Retrieval: Native SQLite and vector memory stores for persistent agent memory, task scheduling, and background search/research. Can connect to external databases via MCP.
- Autonomous 24/7 Support: Yes — Built-in scheduling and task memory for running 24/7 (run autonomous background execution via
hand activate researcheror other hands). - Signal Support: Yes — Native channel integration interfacing with the Go REST API wrapper (port 50889), using
[[sidecar_channels]]adapterlibrefang.sidecar.adapters.signal. - Coding Agent Support: Yes — Supports Claude Code, Aider, Qwen Code, Gemini CLI, and Codex CLI (spawned as subprocesses; No native OpenCode support).
- Local LLM & Inference: Supports local GGUF models via OpenAI-compatible endpoints served by
local-llm-ggml(port 50080) or Ollama. - Embedding Options: Local embeddings using the
local-llm-ggmlserver (port 50080) or Ollama, or remote/Ollama embeddings. - Reranking Support: None. Reranking is not supported by the LibreFang daemon.
- STT/TTS Support: Local STT via local Whisper server (
local-speech-to-texton port 50090) and local TTS via Qwen3-tts (local-text-to-speechon port 50095) supported via a patched package (librefang-gitwithfeature-local-stt-ttspatchset). - Agent Client Protocol: Yes — Bridges the runtime to the Agent Client Protocol (ACP) for editor integrations (stdio or Unix socket).
- Agent to Agent Protocol: Yes — Spawns subagents isolated with bubblewrap (
bwrap), passing context viaSubagentContextfor context inheritance. - Detailed Guide & Onboarding: librefang-ctl.md
- Major Features: Agent server featuring web-based configuration, persistent plugin/provider support, native SQLite hybrid retrieval, optional QMD sidecar integration for hybrid BM25 and vector search, and support for privileged port binding.
- Language/Runtime: Rust (Source) / Compiled binary (Rust Backend + Web-based Config GUI).
- Requirements: Needs a setup code on initial run to unlock the web UI. Uses
~/.local/sandbox/moltisfor data. - Sandboxing: Uses a mostly strict configuration but relies on specific network capability bounding (
CAP_NET_BIND_SERVICE) andPrivateDevices=noif hardware-backed plugins are used. IsolatedHOME. - Memory: Built-in SQLite database with Full-Text Search (FTS5) for keyword-based search and direct vector storage.
- Retention/Compression/Compaction: Context limit handling: automatically extracts facts and summarizes history when approaching context limits (with "summarize" or "truncate" actions).
- Search & Retrieval: Built-in SQLite database with Full-Text Search (FTS5) for keyword-based search and direct vector storage. Can optionally offload heavy search operations to a high-performance QMD sidecar for BM25 keyword search, vector similarity search, and hybrid retrieval with LLM reranking.
- Autonomous 24/7 Support: Yes — support for background/asynchronous sub-agent tasks and memory.
- Signal Support: Yes — Native integration connecting to a local
signal-cliHTTP daemon (port 50889) with a DM/group policy and PIN challenge options. - Coding Agent Support: Yes — Supports Alibaba Coding Plan (
acp), Claude Code, Codex, and OpenCode via tmux/PTY-based external runtimes. - Local LLM & Inference: Routes to local GGUF models via
local-llm-ggml(port 50080) or Ollama. - Embedding Options: Local embeddings via
local-llm-ggml(port 50080) or Ollama, or QMD vector processing. - Reranking Support: Yes — Native reranking via the QMD sidecar (
qwen3-reranker-0.6bby default) or routes to local-rerank endpoint on port 50086. - STT/TTS Support: Natively supports local STT via
local-speech-to-texton port 50090 and local TTS vialocal-text-to-speechon port 50095. - Agent Client Protocol: Yes — Integrates external coding agents via ACP (stdio-based JSON-RPC).
- Agent to Agent Protocol: Yes — Supports spawning child agents (
spawn_agenttool) up to nesting depth 3, both blocking and nonblocking, with policy-aware session tools. - Detailed Guide & Onboarding: moltis-ctl.md
- Major Features: Ultra-lightweight gateway (<10MB memory) with built-in web console and CLI integration, leveraging Model Context Protocol (MCP) for tools/memory.
- Language/Runtime: Go (Source) / Compiled binary (Go Backend + Web-based Console GUI).
- Requirements:
~/.local/sandbox/picoclawfor persistent configuration. - Sandboxing: Relaxed Namespaces Profile. Uses standard agent isolation with redirected
HOMEand strict filesystem protection. IsolatedHOME. - Memory: RAW JSON files for session/history (history limit default 50). No native vector db.
- Retention/Compression/Compaction: Simple context limit: history limit (default 50). No native compression.
- Search & Retrieval: Uses Model Context Protocol (MCP) to delegate search/retrieval tasks to external databases (such as
sqlite-vecMCP, Qdrant MCP, or Chroma MCP). - Autonomous 24/7 Support: Yes — Messaging gateway daemon background service (
picoclaw-launcher -no-browser). - Signal Support: No — Not natively supported.
- Coding Agent Support: Yes — Supports Claude Code, Codex, and Copilot CLI via provider-wrapped CLI execution (No OpenCode support).
- Local LLM & Inference: Routes to local GGUF models via
local-llm-ggml(port 50080) or Ollama. - Embedding Options: Local embeddings via
local-llm-ggml(port 50080) or Ollama via API routing or MCP. - Reranking Support: No native reranking. Reranking can be delegated via MCP to the local-inference reranker endpoint on port 50086.
- STT/TTS Support: Local STT by defining an ASR provider pointing to the local whisper-server on port 50090. No native TTS engine; requires an external MCP TTS tool.
- Agent Client Protocol: No native ACP support.
- Agent to Agent Protocol: Yes — Supports
spawn(asynchronous background subagents via goroutines) anddelegate(synchronous targeted subagents) tools, with target allowlist validation. - Detailed Guide & Onboarding: picoclaw-ctl.md
- Major Features: Node.js webhook server designed for securely executing containerized runtime tools and managing agent workspaces.
- Language/Runtime: TypeScript/Node.js (Source) / Node.js containerized (Node.js Webhook Backend, no Web GUI).
- Requirements: Requires Docker/Podman running locally to spawn tool environments.
- Sandboxing: Relaxed Namespaces Profile with
PrivateDevices=no. Strict profiles are dropped to allow the agent to launch local Docker/Podman containers successfully. - Memory: Per-session SQLite database mounted inside the container at
/workspace/session.db(containingmessages_inandmessages_outtables) and a central SQLite database. MaintainsCLAUDE.mdand related markdown files in isolated agent group directories under/workspace/agent/. - Retention/Compression/Compaction: Context limit handling is handled by the agent (e.g. Claude SDK) discovering its own session data in
.claude/inside/workspace/.claude/. No native compaction. - Search & Retrieval: Uses SQLite databases within the Node.js process to maintain state. Maintains
CLAUDE.mdand related markdown files in isolated agent group directories. Heavy search, retrieval, and vector storage tasks are delegated to external MCP servers (likesqlite-vecMCP, Qdrant MCP, or Chroma MCP) or handled by the agent calling custom tools. - Autonomous 24/7 Support: Yes — background host sweep (every ~60s) and active container poll (~1s) check for due
process_after/deliver_aftertimestamps, reschedule recurring tasks using cron, and wake up agents. - Signal Support: No — Not natively supported.
- Coding Agent Support: None (No native OpenCode support), but has an optional
add-opencodeskill for local inference. - Local LLM & Inference: Routes to local GGUF models via OpenAI-compatible endpoints served by
local-llm-ggml(port 50080) or Ollama. - Embedding Options: Local embeddings via
local-llm-ggml(port 50080) or Ollama, or remote embeddings. - Reranking Support: No native reranking. Reranking can be added via a custom skill or by configuring an MCP tool that calls the local-inference reranker endpoint on port 50086.
- STT/TTS Support: No native STT/TTS in the core daemon, but easily integrated via custom tools/skills calling
local-speech-to-text(port 50090) andlocal-text-to-speech(port 50095). - Agent Client Protocol: No native ACP support.
- Agent to Agent Protocol: Yes — supported via target-agent routing on
messages_out. An agent-runner can setchannel_type: 'agent',platform_idto the target agent group ID, andthread_idto a target session ID. The host reads this, validates permissions, and writes amessages_inrow to the target session's DB. - Detailed Guide & Onboarding: nanoclaw-ctl.md
Each assistant in this repository is managed by a dedicated shell wrapper script (assistants/<assistant>-ctl) adhering to standard design and lifecycle management guidelines.
| Command | Action | Description |
|---|---|---|
install |
Install | Set up local directory structures under ~/.local/sandbox/<assistant>, generate environment file .env if missing, and create/register the systemd user unit. |
install --no-start |
Install | Same as install, but do not start (or stop it if already running) the service after installation for further configuration (e.g. editing .env). |
install --new-config |
Install | Same as install, but force overwrite any existing environment and configuration files with their default templates (useful for resetting to defaults). |
uninstall |
Uninstall | Stop and disable the systemd service, and clean up the systemd service files. (Data is preserved). |
start / stop / restart |
Lifecycle | Standard controls to start, stop, or restart the systemd user service. |
status |
Status | Show the current runtime status of the systemd service. |
logs [args...] |
Logs | View the daemon stdout/stderr output. Pass -f to tail/follow (e.g. <assistant>-ctl logs -f). Supports passing any additional journalctl options. |
edit |
Edit Config | Open the assistant's .env environment file (and config.toml configuration files for supported assistants) in your $EDITOR and automatically restart the service upon exit to apply changes. |
exec <args...> |
Sandbox Execute | Run the assistant's CLI binary or command line inside a transient systemd user service inheriting the same sandboxing and environment. |
shell |
Sandbox Shell | Spawn an interactive shell inside the assistant's systemd user sandbox for debugging. |
- Service File:
~/.config/systemd/user/<assistant>.service(orhermes-gateway.service) - Environment File:
~/.config/systemd/user/<assistant>.env(orhermes-gateway.env) - Data Home:
~/.local/sandbox/<assistant>(the service forces an isolatedHOMEenvironment variable to this location to keep configurations and cached libraries contained). - Shared Space (
agent-shared):~/agent-sharedis bind-mounted in read-write mode to the sandbox of all assistants by default. This enables cross-assistant sharing of outputs, databases, and logs. - Private Submounts (
agent-private): To easily share specific directories from your host's private workspace (~/agent-private/*) to an assistant's sandbox without exposing the entire home directory, configure theAGENT_PRIVATE_MOUNTSenvironment variable inside the assistant's.envenvironment file.- Syntax:
AGENT_PRIVATE_MOUNTS="health diary" - Behavior: The control wrapper will dynamically parse this list, ensure that the target directories (e.g.
~/agent-private/healthand~/agent-private/diary) exist on the host, inject the correspondingBindPaths=rules into the systemd service file, reload the user daemon, and dynamically mount them in allstart,restart,exec, andshellwrapper commands.
- Syntax:
This README.md serves as the primary system registry and architectural entry point. Follow this process to update or recreate the information documented here:
- Update Remote Sources: Fetch the latest commits for all sandboxed assistants under
scratch/by running:for d in librefang moltis zeroclaw ironclaw hermes-agent nanobot nanoclaw picoclaw; do cd "scratch/$d" 2>/dev/null && git fetch origin && git pull || true done
- Review Control Configurations: Check the respective control wrappers (
assistants/*-ctl.md) to verify default port allocations, sandbox profiles, and setup procedures. - Verify Feature Implementations: Inspect configuration schemas and source code directories:
- For ZeroClaw: check
crates/zeroclaw-config/src/schema.rsandcrates/zeroclaw-memory/. - For IronClaw: check
.env.exampleandFEATURE_PARITY.md. - For Hermes: check
hermes_constants.py,agent/context_compressor.py, andacp_adapter/. - For NanoBot: check
nanobot/config/schema.pyandnanobot/agent/memory.py.
- For ZeroClaw: check
- Audit Default Ports: Keep the
## Default Portsregistry table synchronized with any new or modified port bindings found in the assistants' configs. - Enforce Sandboxing Alignment: If any assistant introduces new hardware or namespace isolation requirements, update the
## Sandboxing Architectureprofiles accordingly.