by tuchg
Stop babysitting local AI agents. Just notifications, approve, and resume your Codex,Pi, or Claude code sessions anywhere. 0-Intrusion mobile control bridge via Telegram/Wechat/飞书. No hooks, no skills, no MCP.
# Add to your Claude Code skills
git clone https://github.com/tuchg/LucarneNo comments yet. Be the first to share your thoughts!

English | 中文
Stop babysitting your local AI agents.
macOS / Linux:
curl -LsSf https://github.com/tuchg/Lucarne/releases/latest/download/lucarned-installer.sh | sh
Windows PowerShell:
powershell -c "irm https://github.com/tuchg/Lucarne/releases/latest/download/lucarned-installer.ps1 | iex"
Homebrew:
brew tap tuchg/Lucarne https://github.com/tuchg/Lucarne
brew install lucarned
Release archives are also available for macOS, Linux, and Windows on x86_64 and aarch64.
lucarned init
Initialization guides you through:
claude, codex, copilot, gemini, pi~/.lucarned/lucarned.yamllucarned autostart install --start
brew services start lucarned
brew services restart lucarned
brew services stop lucarned
lucarned autostart uses native user-level service managers:
Linux autostart requires systemd user services. Non-systemd Linux can run lucarned manually.
/panel
After the Lucarne panel appears, you can create workspaces, bind agents, resume historical sessions, and approve commands.
lucarned doctor
lucarned paths
lucarned autostart status
lucarned autostart start
lucarned autostart stop
lucarned update
brew update
brew upgrade lucarned
brew services start lucarned
brew services restart lucarned
brew services stop lucarned
macOS/Linux config: ~/.lucarned/lucarned.yaml
Windows config: %LOCALAPPDATA%\lucarned\lucarned.yaml
Logs: lucarned paths
See the full example at examples/lucarned.yaml.
After initialization, the active config lives at: ~/.lucarned/lucarned.yaml.
You can also override settings with environment variables:
export TELEGRAM_BOT_TOKEN="123456:..."
export TELEGRAM_CHAT_ID="123456789"
export LUCARNE_AUTHORIZED_USER_IDS="111111,222222"
See the full command reference at docs/commands.md. This README keeps only the core paths.
WeChat quote routing uses two strategies: it prefers message_id, then falls back to a quoted-text hash.
Telegram needs Topics/thread mode for the entry chat. A private chat with the bot can use the bot's own topic mode (Bot API 9.4+ reports this as has_topics_enabled from getMe); use that private chat ID as entry_chat_id. A forum supergroup also works, but is not required.
/panel in the entry chat.New or send /aN to create an agent workspace.[Approve] / [Deny]./status to inspect state, /interrupt to stop work, or /fork to branch a session.Telegram workspaces map to Forum Topics. One project gets one topic; one topic can bind one live agent session.
┌─────────────┐ ┌─────────────┐
│ Telegram │ │ WeChat │ ← User-facing channels
└──────┬──────┘ └──────┬──────┘
│ │
lucarne- lucarne-
telegram wechat ← Channel adapter (commands, notifications, queues, retries)
│ │
└───────┬────────┘
lucarne-adapter ← Plugin registry
│
lucarne ← Core: runtime bus, control plane, history, daemon
│
agent-sessions ← Provider parse / discovery / watch
│
┌──────┬──────┬──────┬──────┐
Claude Codex Gemini Copilot Pi ← Agent CLI processes
| Capability | Claude | Codex | Gemini | Copilot | Pi | |---|---:|---:|---:|---:|---:| | Reasoning / Thinking | ✅ | ✅ | ✅ | ✅ | ✅ | | Tool calls | ✅ | ✅ | ✅ | ✅ | ✅ | | Structured approval | ✅ | ✅ | ✅ | — | ✅ | | AskUserQuestion | ✅ | ✅ | ✅ | — | — | | Usage tracking | ✅ | ✅ | ✅ | ✅ | ✅ | | Interrupt | ✅ | ✅ | ✅ | — | ✅ | | Resume | ✅ | ✅ | ✅ | — | ✅ | | Sub-agents | ✅ | ✅ | — | — | — | | Native commands | ✅ | ✅ | ✅ | — | ✅ | | Fork (create branched session) | ✅ | ✅ | — | — | ✅ |
git clone https://github.com/tuchg/Lucarne.git
cd agents
cargo +nightly check -Zbuild-dir-new-layout
cargo +nightly test -Zbuild-dir-new-layout
agent-sessions into an independent crateMIT
Friend link: linux.do