v0.4 -- open source

You have 10 AI agents running.
Who's managing them?

OneCmd watches all your terminals -- Claude, Codex, Gemini -- and reports back to one chat. Stop babysitting. Start AI managing.

$ curl -sL https://1cmd.ai/setup.sh | bash

See it in action

One chat manages Claude, Codex, and your shell -- simultaneously

1C
onecmd-bot
online
.1 — claude-code claude
.2 — codex codex
.3 — shell zsh

Built-in admin panel

A web dashboard for everything. No Telegram required.

localhost:8080
.1 claude-code active
claude ~/project
Edit auth.py:42
- if token == stored:
+ if hmac.compare_digest(
token, stored):
 
Fixed.
.2 codex running
$ codex --model o4-mini
 
PASS auth.test.ts
PASS db.test.ts
RUN api.test.ts…
 
3/5 tests
.3 shell idle
erik@server:~$
$ htop
 
PID CPU% MEM% CMD
34.2 12.1 node server
8.1 3.4 nginx
4.7 8.9 python onecmd
+
New Terminal
Scheduled Jobs
Description Schedule Status Last Run
Check if deploy pipeline is stuck */5 * * * * active 2 min ago
Backup database to S3 0 3 * * * active 8 hours ago
Clear Docker build cache weekly 0 0 * * 0 paused 3 days ago
Health-check all services */15 * * * * active 12 min ago
Rotate logs when > 500MB draft
agent_sop.md
custom_rules.md
Memory (7)
"always run tests before deploy"
"prefer yarn over npm"
"erik's server is Ubuntu 24.04"
… 4 more
custom_rules.md
1# Custom Rules
2
3- Always run tests before deploying
4- Never restart postgres without asking
5- Prefer yarn over npm
6- Use docker compose v2 syntax
7
8# Auto-restart whitelist
9auto-restart: nginx, redis
10
Deploy Webhooks
{ }
warlockee/myapp
main
armed
cd /app && git pull && docker compose up -d --build
Terminal: deploy Secret: •••••••• Last: 2m ago ✓
{ }
warlockee/1cmd-ai
main
armed
cd /opt/onecmd && git pull && systemctl restart onecmd
Terminal: shell Secret: •••••••• Last: 1h ago ✓
+
Add webhook
Connectors
Telegram
@my_server_bot
connected
4h 23muptime
142messages
1owner
OTP: on Timeout: 1800s
#
Slack
onecmd-bot · Socket Mode
connected
4h 23muptime
37messages
1owner
Rate limit: 1/s Events: message.im
🎮
Discord
Coming soon
planned

Features

Everything you need to manage machines from your phone

AI Manager

An LLM agent that sees all your terminals. Ask it to check disk space, investigate slow services, restart processes, and automate recurring tasks -- in plain English.

Remote Terminal

See terminal output and send keystrokes from Telegram. Modifier keys (Ctrl, Alt, Esc) via emoji prefixes. Live refresh with a single tap.

Multi-Platform

macOS via Accessibility API (Terminal.app, iTerm2, Ghostty, kitty, Alacritty, Warp, and more). Linux via tmux. No screen recording permission needed.

Smart Diagnostics

The AI detects stuck terminals, queues commands to avoid conflicts, follows up on async operations, and auto-summarizes long conversations to stay within context limits.

Background Tasks

"Watch this terminal until the build finishes." The AI runs recurring checks and notifies you when conditions are met. Set it and forget it.

Self-Hosted & Secure

Runs entirely on your machine. Owner-locked to the first Telegram user. Optional TOTP authentication. No cloud backend, no tracking, no subscriptions.

How it works

Native integration on each platform -- no hacks, no workarounds

🍎 macOS

  • Reads terminal text via the Accessibility API (AXUIElement)
  • Injects keystrokes via CGEvent
  • Focuses windows using AXUIElement
  • No Screen Recording permission needed

Supported: Terminal.app, iTerm2, Ghostty, kitty, Alacritty, Hyper, Warp, WezTerm, Tabby

🐧 Linux

  • Discovers sessions with tmux list-panes
  • Reads content with tmux capture-pane
  • Sends keystrokes with tmux send-keys
  • Works with any terminal running inside tmux

Requirement: tmux installed and sessions running

Quick start

Up and running in under 2 minutes

1

Create a Telegram bot

Message @BotFather on Telegram, send /newbot, and copy the API token.

2

Install & configure

One command. Handles Python, dependencies, and walks you through setup.

$ curl -sL https://1cmd.ai/setup.sh | bash
3

Done

Open Telegram and message your bot. The first user to connect becomes the owner.

1

Create a Slack app

Go to api.slack.com/apps, create a new app, and enable Socket Mode. Add bot scopes: chat:write, channels:history, groups:history, im:history.

2

Install OneCmd

$ curl -sL https://1cmd.ai/setup.sh | bash
3

Start with Slack tokens

Provide both your Telegram token (required) and Slack tokens. OneCmd runs both connectors simultaneously.

$ SLACK_BOT_TOKEN=xoxb-... SLACK_APP_TOKEN=xapp-... ./run.sh
1

Create a Telegram bot

Message @BotFather on Telegram, send /newbot, and copy the API token.

2

Run with Docker

$ docker run -d --name onecmd \
    -e TELEGRAM_BOT_TOKEN=your_token \
    ghcr.io/warlockee/onecmd:latest
3

Or use Docker Compose

$ curl -O https://raw.githubusercontent.com/warlockee/1cmd-ai/main/docker-compose.yml
$ # Edit docker-compose.yml with your token
$ docker compose up -d

Security

Designed for self-hosters who care about control

Owner Lock

First user to message the bot becomes the owner. Everyone else is ignored.

TOTP / 2FA

Optional Google Authenticator support. Enable with --enable-otp on first run.

Self-Hosted

Runs on your machine. No cloud backend. Only Telegram bot API messages leave the network.