Are you the author? Sign in to claim
Always-on local AI assistant and AI coding agent runtime in Go. OpenClaw, Claude Code, Codex, and OpenCode alternative w
MatrixClaw is an always-on local AI assistant and AI coding agent runtime for Terminal and Telegram.
MatrixClaw is an open-source, local-first OpenClaw alternative for users who want a self-hosted personal AI operator with durable sessions, SQLite memory, MCP tools, approvals, scheduled tasks, and Claude Code / Codex subagents.
Start a task in the terminal, continue from Telegram, approve tool calls remotely, and return later without losing the session.
matrixclaw is written in Go and runs as a small local daemon. It stores state
in SQLite and gives your AI sessions a durable home outside any single app or
chat window.
The core owns the session: context, files, tool history, approvals, provider settings, model choice, usage records, goals/plans, persistent memory, searchable history, and optional external-agent attachments. The Terminal TUI, Telegram bot, and future mobile clients are only interfaces connected to the same local runtime.
matrixclaw is built for personal work first: development, research, files,
remote checks, reminders, provider switching, visible task plans, memory,
subagents, and agent workflows where continuity and explicit control matter.
It is useful if you want a self-hosted or local-first AI assistant that can keep state across clients, run approved tools, switch between LLM providers, delegate focused tasks to MatrixClaw/Codex/Claude Code subagents, and expose the same runtime through Terminal, Telegram, or MCP.
delegate_task, including MatrixClaw, Codex, or Claude Code runtimes.memory and session_search.web_research, web_research_ask, and compatibility web_search / web_fetch tools with SQLite-backed facts/sources and runtime artifacts. Search providers: DuckDuckGo (free, no key), Tavily (1 000 req/mo free), Serper (2 500 req/mo free), SearXNG (self-hosted). Configure from /modules without restarting. When an MCP browser server is connected, MatrixClaw can also expose interactive browser tools for opening pages, clicking, typing, waiting, and screenshots.MatrixClaw is not just another terminal AI coding agent.
OpenClaw focuses on self-hosted personal AI assistance across chat apps. Claude Code, Codex, and OpenCode focus on coding-agent workflows in the terminal or developer environment.
MatrixClaw sits between them: an always-on local AI operator with a daemon, Terminal TUI, Telegram client, durable SQLite sessions, MCP tools, approvals, scheduled tasks, memory, and Claude Code / Codex subagents.
Use MatrixClaw if you want:
matrixclaw is daemon-first, not UI-first. The daemon owns the durable session,
the SQLite database, approvals, runs, storage, modules, automation, and external
agent attachments. Clients render state and send commands.
This keeps the Terminal TUI and Telegram bot small:
The daemon is also the memory boundary. Idle matrixclaw stays small, while optional heavy work such as Whisper.cpp can run only for the current request unless you explicitly choose an always-running local process.
Most AI tools keep the real conversation inside one UI process. That makes every other client feel like a separate product.
matrixclaw keeps the session in the daemon instead. The Terminal TUI and
Telegram bot are just clients connected to the same local runtime.
flowchart TD
TUI[Terminal TUI]
TG[Telegram Bot]
FC[Future Clients]
TUI --> D
TG --> D
FC --> D
D["matrixclawd<br/>Core AI Server"]
D --> S[Sessions / Runs]
D --> A[Approvals / ACL]
D --> F[Files / Deliveries]
D --> P[Goals / Plans]
D --> U[Usage / Search]
S --> B[Providers / Tools / Local SQLite]
A --> B
F --> B
P --> B
U --> B
A typical flow:
matrixclaw tui.The goal is not to replace your editor or host your work in the cloud. The goal is to give your own machine a small, durable AI operator that can be reached from more than one surface.
Latest release highlights for v0.1.19:
Install the latest release:
curl -fsSL https://raw.githubusercontent.com/Suren878/matrixclaw/main/scripts/install.sh | bash
The installer downloads the matching GitHub Release archive, installs
matrixclaw, matrixclawd, and matrixclaw-telephony-gateway into
~/.local/bin, prepares local config/state directories, and starts
matrixclaw setup.
Local TTS/STT runtimes are optional because they install extra system packages
and build native binaries. To prepare Piper, Supertonic, Whisper.cpp, and
ffmpeg during install:
curl -fsSL https://raw.githubusercontent.com/Suren878/matrixclaw/main/scripts/install.sh | bash -s -- --voice-runtime
You can also install them later:
curl -fsSL https://raw.githubusercontent.com/Suren878/matrixclaw/main/scripts/install_voice_runtime.sh | bash
On systems where packages are managed separately, install git, cmake, a C++
compiler, Python 3 with venv support, and ffmpeg, then run:
scripts/install_voice_runtime.sh --no-system-deps
The voice runtime installer prepares local binaries only. Voices and STT models are selected and downloaded later from the module UI, so an open-source install can stay small until you choose local audio features.
After setup is saved, run matrixclaw to open the terminal TUI. On a fresh
machine, plain matrixclaw opens setup first and opens the TUI on later runs.
When the TUI starts, it checks the latest GitHub Release. If a newer version is available, it asks before updating. A successful TUI update then asks whether to restart the daemon so the background service uses the new binary.
Manual update:
matrixclaw update install
matrixclaw service restart
Uninstall keeps config and state by default:
curl -fsSL https://raw.githubusercontent.com/Suren878/matrixclaw/main/scripts/uninstall.sh | bash
Remove config and state explicitly:
curl -fsSL https://raw.githubusercontent.com/Suren878/matrixclaw/main/scripts/uninstall.sh | bash -s -- --purge
plan_* tools, and manual /plan commands./usage./memory, /search, and assistant-facing memory / session_search tools./tts and assistant text_to_speech tool results sent back as voice messages and archived in storage.gemini_live), Grok Voice (grok_voice), and OpenAI Realtime
(openai_realtime) are available through MatrixClaw's provider-neutral
realtime protocol, so iOS, web, or SIP gateways can attach without speaking
provider-specific APIs.matrixclaw-telephony-gateway process bridges Asterisk
ARI/externalMedia and SIP/PJSIP calls into realtime voice sessions, exposes an
approval-gated telephony_call tool, supports inbound caller allowlists, and
can save transcripts, post-call reports, and temporary MP3 call recordings.research_id, runtime artifact storage, provider selection, and per-provider credential storage; provider switch takes effect immediately without a daemon restart.Planning Mode turns a loose multi-step request into durable session work. A plan
has a goal, top-level tasks, optional subtasks, and explicit item statuses:
pending, active, done, and skipped.
The TUI shows the plan in a side panel with tree rendering for subtasks. You can create and edit tasks manually, or let the assistant create/update the plan through safe plan tools.
Execution is owned by the core runtime:
This keeps the model from being the source of truth for whether the plan is complete. The model performs the current task; the daemon owns the workflow state.
See Planning Mode for the implementation model and edge cases.
matrixclaw open TUI when configured, otherwise setup
matrixclaw setup open setup
matrixclaw status print setup and service state
matrixclaw doctor diagnose setup, daemon, and providers
matrixclaw version print client and daemon build info
matrixclaw update check for and install newer releases
matrixclaw providers list setup provider catalog
matrixclaw providers login openai-codex
matrixclaw providers verify verify configured provider model access
matrixclaw providers verify --catalogs
matrixclaw agents list external agent runtimes
matrixclaw agents start create an external agent session
matrixclaw mcp serve --session SESSION_ID
matrixclaw service status print service state
matrixclaw service restart restart service
matrixclaw service stop stop service
matrixclaw service logs print recent service logs
matrixclaw tui [WORKDIR] open terminal chat for the current or given directory
matrixclawd service binary used by systemd/direct launch
The setup file is the configured marker. First run matrixclaw or explicit
matrixclaw setup writes it; later matrixclaw starts the daemon when needed
and opens the terminal TUI. Exiting the TUI closes only the terminal client, not
the background daemon.
Commands that read setup report missing or unsupported setup on stderr and exit
nonzero. Use matrixclaw setup to recreate setup explicitly.
matrixclaw supports the Model Context Protocol as a daemon module.
As an MCP client, matrixclawd can connect configured MCP servers and
expose their remote tools to the assistant as normal matrixclaw tools. The first
supported transports are stdio command servers and streamable HTTP endpoints.
Remote tools are registered with prefixed IDs such as mcp_browser_navigate.
With a browser MCP server such as Playwright enabled, MatrixClaw is not limited to text search and content extraction. The remote browser actions are registered as normal tools and can be used by the assistant for interactive page work:
open / navigate URL
click elements
type into fields
wait for page state
take screenshots
read rendered text or DOM snapshots
The exact tool IDs depend on the MCP server's own tool names. A browser server
with remote tools named navigate, click, type, screenshot, and wait
would appear as mcp_browser_navigate, mcp_browser_click,
mcp_browser_type, mcp_browser_screenshot, and mcp_browser_wait. If the
remote server already prefixes tool names, that prefix is preserved in the final
MatrixClaw tool ID.
Example setup.json fragment:
{
"modules": {
"mcp": {
"enabled": true,
"servers": [
{
"id": "browser",
"enabled": true,
"transport": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-playwright"],
"read_only": false
}
]
}
}
}
As an MCP server, matrixclaw can expose its daemon tool registry to an external MCP host:
matrixclaw mcp serve --session SESSION_ID --workdir /path/to/project
External MCP tools are conservative by default: unless a configured server is
marked read_only, its tools are treated as mutation tools and require
matrixclaw approval before execution.
See MCP Module for configuration fields, safety rules, and current protocol limits.
OpenAI Codex Subscription uses ChatGPT/Codex OAuth instead of an API key. Select
OpenAI Codex Subscription in setup, authorize with:
matrixclaw providers login openai-codex
Then open the provider's Model picker. Matrixclaw loads the available Codex
models from the Codex backend and stores the chosen model like any other session
provider.
Provider presets are backed by a registry in internal/providers: each provider
declares its catalog metadata, auth mode, transport, runtime adapter, aliases,
defaults, capabilities, and OpenAI-compatible wire quirks in one place. This
keeps API-key providers, Codex OAuth, Anthropic, Gemini, OpenAI-compatible
gateways, and custom endpoints on the same setup path instead of scattering
provider-specific checks through the UI and runtime adapters. Model pickers load
the provider catalog live when the provider exposes one. If a catalog requires
credentials, the model picker is disabled until an API key or OAuth session is
available. matrixclaw providers verify --catalogs checks configured providers
and public catalogs in one pass, reporting whether a model list came from a
configured key, public catalog, or live OAuth/backend catalog.
The Terminal TUI and Telegram client share the same control-plane commands, so a command that changes session state in one client is visible from the other. These are client commands, not model tools.
/new create a session
/sessions list, select, rename, or delete sessions
/provider select provider/model for the current session
/permissions change the current session permission mode
/context inspect compacted context and token estimate
/usage show recorded input/output/reasoning/cached tokens
/memory show durable assistant memory
/plan show Planning Mode
/plan goal <text> set the session goal
/plan add <text> add a plan item
/plan subtask <n> <text> add a subtask under an item
/plan edit <n> <text> edit a plan item
/plan active|done|skip <n> update a plan item by number
/plan clear clear Planning Mode after confirmation
/search <query> search stored message history
/modules storage manage local stored and temporary files
/modules tts manage Text to Speech providers and voices
/modules stt manage Speech to Text providers and models
/modules agents enable or disable external agent runtimes
/remind create a one-time reminder
/tasks list and manage scheduled AI tasks
/server, /status, /restart, /stop inspect, restart, or stop the local service
For multi-step user requests, the assistant also receives safe plan tools:
plan_get, plan_set_goal, plan_add_item, plan_update_item, and
plan_clear. These update the same session plan that manual commands display.
The assistant also receives memory tools: session_search searches stored
conversation history across sessions, while memory can list memories and save,
replace, or remove them after explicit approval. Saved memories are injected into
future provider prompts as a compact Memory: block.
Prerequisites:
git clone https://github.com/Suren878/matrixclaw.git
cd matrixclaw
go vet ./...
mkdir -p ./bin
go build -o ./bin/matrixclaw ./cmd/matrixclaw
go build -o ./bin/matrixclawd ./cmd/matrixclawd
./bin/matrixclaw
For a local source install:
./scripts/install.sh --from-source
Release builds can stamp version metadata:
./scripts/build_release.sh
flowchart LR
TUI[Terminal TUI] --> API[Daemon HTTP API]
TG[Telegram client] --> API
API --> CORE[Core runtime]
CORE --> STORE[(SQLite)]
CORE --> ORCH[Orchestration]
ORCH --> PROVIDERS[LLM providers]
ORCH --> AGENTS[External agents]
ORCH --> TOOLS[Tools]
TOOLS --> APPROVALS[Durable approvals]
APPROVALS --> STORE
CORE --> PLAN[Planning Mode state]
CORE --> SEARCH[Search / Usage]
CORE --> MODULES[Storage / Voice / MCP / Automation modules]
PLAN --> STORE
SEARCH --> STORE
MODULES --> STORE
Core rules:
internal/controlplaneExternal agents are optional runtimes attached to matrixclaw sessions. They are not normal LLM providers. matrixclaw still owns the session, local history, client handoff, and normalized event display; the external agent owns its own thread or process protocol.
Current built-in runtimes:
codex binary.claude binary.Manage them from the TUI:
/modules -> External Agents
The screen shows installed/enabled state, mode, resolved binary path, and
version when available. Enabling Codex or Claude Code adds it to the New
Session picker and makes it available as an external subagent runtime.
External-agent options use the same shared controls as the rest of the TUI:
Path opens the standard text prompt, and Enabled opens a small
Enable/Disable picker.
MatrixClaw assistant sessions receive a delegate_task tool for bounded child
work. The parent model stays in charge of the user-facing session; the child
session is hidden from the normal session list and the parent receives only the
tool result summary.
Subagents can run as native MatrixClaw child sessions or through enabled
external agents. Built-in external subagent runtimes are Codex (codex) and
Claude Code (claude). The main model sees the current subagent configuration in
its system prompt, including which runtimes are available or disabled, so it can
choose matrixclaw automatically when it is the only option or ask which
runtime to use when multiple external subagents are enabled.
The tool accepts:
goal requiredcontext optionalruntime: matrixclaw, codex, claude, or auto (matrixclaw default)model optionalworking_dir optionalSubagent runs start with an isolated prompt built from the delegated
goal/context. They do not inherit the parent chat history, plan, skills prompt,
or memory prompt. Child MatrixClaw runs use a restricted tool view: no recursive
delegate_task, no memory, no plan_*, no TTS, and no automation/storage/
skills category tools.
If a child run reaches a permission approval, MatrixClaw does not open a separate user approval flow in this version. The delegated task finishes with a controlled error summary so the parent can decide what to do next.
Text to Speech supports Piper and Supertonic 3 as local providers. Speech to Text supports Whisper.cpp as a local provider. Voice models are downloaded from the module UI, while the local runtime binaries are prepared by:
scripts/install_voice_runtime.sh
The script installs/updates:
~/.local/state/matrixclaw/runtime/piper-venv~/.local/state/matrixclaw/runtime/supertonic-venv~/.local/state/matrixclaw/runtime/whisper.cppffmpeg for STT input conversion and local TTS MP3 outputVoice is part of the same daemon-first architecture as sessions and storage.
Clients request speech through the daemon API, the daemon selects the active
module/provider/model, and Terminal plus Telegram use the same module state.
Generated Telegram TTS audio is saved into Storage under telegram/audio/.
The TUI exposes voice as normal modules:
/modules -> Text to Speech
/modules -> Speech to Text
/modules -> Realtime Voice
Each module has a provider picker, provider setup, and a status screen. The provider picker selects what the assistant should use; setup installs engines, downloads voices/models, chooses language/model/voice, and selects runtime mode.
Local providers support two runtime modes:
supertonic serve on loopback, and Whisper.cpp uses whisper-server with
the local /inference endpoint.Piper voices are fetched from the online Piper voice catalog when available, with bundled English and Russian fallbacks. The setup flow is:
/modules -> Text to Speech -> Setup Provider -> Piper
Choose Engine to install or delete the managed piper-tts runtime. Then open
Voice, choose Add Voice, pick a language, download a voice, and make it the
active voice. Piper engine installation and voice downloads stay separate so a
small open-source install does not pull every voice by default. The status
screen reports local model storage, runtime mode, and current process RAM.
Supertonic 3 is the heavier local TTS option. Its Runtime row installs the
Python SDK with local server support and runs the official supertonic download
command for the shared model. Voice styles M1-M5/F1-F5 are selected without
separate per-voice downloads, and language can stay on Auto or be pinned to
one of Supertonic's 31 supported language codes. In Always running mode,
matrixclaw keeps supertonic serve on loopback and sends TTS requests to that
local API. Supertonic can encode WAV, FLAC, and OGG/Vorbis natively; Matrixclaw
converts local TTS output to MP3 through ffmpeg before returning it to clients.
The temporary WAV files produced by local runtimes are removed immediately after
the daemon reads them.
Whisper.cpp models are fetched from the upstream Whisper.cpp model catalog when
available, with bundled size tiers from tiny through large-v3. If the
Whisper engine is not installed yet, choosing a model can build the engine and
download the model in one flow. Language is Auto by default, and the TUI
exposes Whisper's supported language codes from Afrikaans through Chinese
instead of hard-coding only English/Russian:
/modules -> Speech to Text -> Setup Provider -> Whisper.cpp
Open Model, download a model size, select the active model, then leave
language on Auto or pin a specific spoken language. Run Per Task starts
whisper-cli only for the current transcription; Always Running keeps
whisper-server warm on loopback. The status screen reports local model storage
and current process RAM.
The STT API accepts voice JSON bodies up to 36 MB, which is roughly 25 MB of raw audio after base64 overhead.
MatrixClaw also has a daemon-level realtime voice gateway for live speech-to-speech sessions. This is separate from the batch TTS/STT endpoints: clients create a realtime session, open a WebSocket, stream input audio frames, and receive assistant audio, transcripts, turn-final events, tool calls, and approval updates through the same connection.
The client protocol is provider-neutral. Registered realtime providers include
gemini_live, backed by Gemini Live / Gemini Native Audio; grok_voice, backed
by xAI Grok Voice Agent API; and openai_realtime, backed by OpenAI Realtime
API. The daemon owns the provider choice so iOS, web, desktop, or SIP/IP
telephony clients do not need to know a provider's wire format.
The same realtime layer is the integration point for phone calls. Telephony is kept in an optional gateway process so SIP, RTP, provider-specific trunks, and Asterisk configuration stay outside the main daemon, while MatrixClaw keeps the provider choice, prompts, approvals, transcripts, and session delivery.
MVP audio format:
Relevant API endpoints:
GET /v1/modules/voice/realtime_voice
PATCH /v1/modules/voice/realtime_voice
POST /v1/realtime-voice/sessions
GET /v1/realtime-voice/sessions/{id}
GET /v1/realtime-voice/sessions/{id}/stream
DELETE /v1/realtime-voice/sessions/{id}
Configuration can live in setup.json under modules.realtime_voice, and can
also be changed from the control plane:
/modules realtime_voice
/modules realtime_voice provider-select
/modules realtime_voice setup
/modules realtime_voice enabled
The UI stores the enabled flag and selected provider in setup. Model, voice,
endpoint, and API key can be set in setup.json or by environment variables:
{
"modules": {
"realtime_voice": {
"enabled": true,
"provider_id": "grok_voice",
"providers": {
"gemini_live": {
"api_key": "",
"api_key_env": "MATRIXCLAW_GEMINI_LIVE_API_KEY",
"model_id": "gemini-2.5-flash-native-audio-preview-12-2025",
"voice_id": "Puck",
"endpoint": "wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1beta.GenerativeService.BidiGenerateContent"
},
"grok_voice": {
"api_key": "",
"api_key_env": "XAI_API_KEY",
"model_id": "grok-voice-latest",
"voice_id": "eve",
"language": "ru",
"endpoint": "wss://api.x.ai/v1/realtime"
},
"openai_realtime": {
"api_key": "",
"api_key_env": "OPENAI_API_KEY",
"model_id": "gpt-realtime-2.1",
"voice_id": "marin",
"language": "ru-RU",
"endpoint": "wss://api.openai.com/v1/realtime"
}
}
}
}
}
Useful environment overrides:
MATRIXCLAW_REALTIME_VOICE_ENABLED=1
# Gemini Live
MATRIXCLAW_REALTIME_VOICE_PROVIDER=gemini_live
MATRIXCLAW_GEMINI_LIVE_API_KEY=...
MATRIXCLAW_GEMINI_LIVE_MODEL=gemini-2.5-flash-native-audio-preview-12-2025
MATRIXCLAW_GEMINI_LIVE_VOICE=Puck
MATRIXCLAW_GEMINI_LIVE_LANGUAGE=ru-RU
# Grok Voice
MATRIXCLAW_REALTIME_VOICE_PROVIDER=grok_voice
MATRIXCLAW_GROK_VOICE_API_KEY=...
MATRIXCLAW_GROK_VOICE_MODEL=grok-voice-latest
MATRIXCLAW_GROK_VOICE_VOICE=eve
MATRIXCLAW_GROK_VOICE_LANGUAGE=ru
# OpenAI Realtime
MATRIXCLAW_REALTIME_VOICE_PROVIDER=openai_realtime
MATRIXCLAW_OPENAI_REALTIME_API_KEY=...
MATRIXCLAW_OPENAI_REALTIME_MODEL=gpt-realtime-2.1
MATRIXCLAW_OPENAI_REALTIME_VOICE=marin
MATRIXCLAW_OPENAI_REALTIME_LANGUAGE=ru-RU
OpenAI Realtime receives 24 kHz PCM. MatrixClaw keeps its provider-neutral
16 kHz input contract and resamples client or telephony audio inside the
provider adapter. OpenAI input transcription is enabled with
gpt-live-transcribe so finalized conversation turns can be persisted.
Telephony support is prepared as an optional self-hosted gateway:
matrixclaw-telephony-gateway. It is intended for Asterisk/SIP deployments and
provider-specific PBX or SIP trunks. MatrixClaw does not require telephony for
normal voice use.
Current shape:
externalMedia to bridge RTP audio into
MatrixClaw realtime voice sessions.telephony_call as an approval-gated assistant tool when
the telephony module is enabled and configured.call-records.Useful gateway environment variables:
MATRIXCLAW_TELEPHONY_ADDR=127.0.0.1:8090
MATRIXCLAW_TELEPHONY_TOKEN=...
MATRIXCLAW_API_URL=http://127.0.0.1:8080
MATRIXCLAW_API_TOKEN=...
MATRIXCLAW_TELEPHONY_ARI_URL=http://127.0.0.1:18088/ari
MATRIXCLAW_TELEPHONY_ARI_USER=matrixclaw
MATRIXCLAW_TELEPHONY_ARI_PASSWORD=...
MATRIXCLAW_TELEPHONY_ARI_APP=matrixclaw
MATRIXCLAW_TELEPHONY_SIP_PROFILE=main
MATRIXCLAW_TELEPHONY_CALLER_ID=...
MATRIXCLAW_TELEPHONY_INBOUND_ENABLED=1
MATRIXCLAW_TELEPHONY_INBOUND_ALLOWED_CALLERS=+15551234567,+442012345678
MATRIXCLAW_TELEPHONY_RECORD_CALLS=1
MATRIXCLAW_TELEPHONY_RECORDING_FORMAT=mp3
MATRIXCLAW_TELEPHONY_INBOUND_ALLOWED_CALLERS accepts numbers separated by
newlines, spaces, commas, or semicolons.
Provider-specific SIP trunk services are deployment details. The intended boundary is Asterisk/SIP, so each user can bring their own telephony provider or skip telephony entirely.
See Architecture, Telegram, and External Agents for client/runtime boundaries. See Local Voice, Browser Module, and Storage and Telegram Files for local model/runtime paths, run modes, temporary-file lifecycle, and Telegram voice/file flow. See MCP Module for MCP client/server setup.
cmd/matrixclaw: operator CLI and terminal entrypointcmd/matrixclawd: daemon composition rootcmd/matrixclaw-telephony-gateway: optional Asterisk/SIP to realtime voice bridgeclients/terminal: setup UI, terminal chat, widgetsclients/telegram: Telegram Bot API clientinternal/core: sessions, runs, approvals, messages, eventsinternal/api: local HTTP APIinternal/controlplane: shared command surfaceinternal/store: SQLite persistenceinternal/providers: provider adapters and cataloginternal/externalagents: external-agent registry and Codex app-server adapterinternal/mcp: MCP client/server bridgeinternal/modules/mcp: daemon MCP moduleinternal/modules/telephony: telephony module and approval-gated call toolinternal/telephony: Asterisk ARI, RTP, realtime, and call recording gateway codeinternal/tools: builtin toolsdocs: planning, MCP, local voice, and storage notesscripts: install, uninstall, and release-build scriptspackaging: release and Homebrew packaging notesLocal by default:
Can leave your machine:
The daemon API is intended for local clients. By default matrixclawd refuses
non-loopback HTTP binds unless MATRIXCLAW_ALLOW_REMOTE_HTTP=1 is explicitly
set.
See SECURITY.md for security reporting and local-secret notes.
Yes. MatrixClaw is an open-source, local-first OpenClaw alternative for users who want an always-on AI assistant reachable from Terminal and Telegram, with local SQLite state, approvals, MCP tools, memory, scheduled tasks, and subagents.
Partly. Claude Code is a terminal coding agent. MatrixClaw is a persistent local AI runtime that can use Claude Code as an external subagent while keeping the main session, memory, approvals, Telegram access, and automation in one daemon.
Partly. Codex CLI is a command-line coding agent. MatrixClaw can use Codex as an external subagent, but its main goal is durable personal AI automation across Terminal, Telegram, MCP tools, memory, approvals, and scheduled tasks.
MatrixClaw overlaps with OpenCode for terminal AI workflows, but focuses more on always-on personal automation, Telegram access, persistent sessions, approvals, and subagent orchestration.
matrixclaw is an early single-user local operator. It is a good fit for local
developer machines, terminal-first usage, Telegram as a remote companion client,
and experimenting with provider/tool orchestration without rewriting clients.
It is not currently a hosted multi-tenant service, browser IDE replacement, or distributed worker platform.
MIT. See LICENSE.
Run Claude Code as an MCP server so any agent can delegate coding tasks to it
Browser automation using accessibility snapshots instead of screenshots
Google's universal MCP server supporting PostgreSQL, MySQL, MongoDB, Redis, and 10+ databases
Official GitHub integration for repos, issues, PRs, and CI/CD workflows