taktiko
v0.5.0
Published
Taktiko daemon — pairs your machine with a Taktiko server and runs your local agent CLIs (Claude Code / Codex / Kimi) for each dispatched turn.
Downloads
2,283
Maintainers
Readme
taktiko
The Taktiko daemon — the small program you run on your own machine to connect it to a Taktiko server.
Taktiko agents run your own local agent CLI (Claude Code / Codex / Kimi). The daemon pairs your machine with the server, holds a WebSocket open, and for each turn the server dispatches it runs the agent's CLI locally and streams the reply back. Your code, credentials, and CLI never leave your machine — only the model's text output does.
Install
npm install -g taktikoRequires Node.js ≥ 20. Provides a single taktiko command.
Use
In the Taktiko web app, open the Connect your computer step (onboarding, or Settings → Computers). It shows a pairing command with a one-time token.
Run it on the machine you want to connect:
taktiko pair <pairingToken> --server https://your-taktiko-server taktiko start # runs in the background — no terminal to keep openpairredeems the token and saves a daemon credential to~/.taktiko/daemon.json.startlaunches the daemon as a detached background process (logging to~/.taktiko/daemon.log) and returns immediately, so you can close the terminal. It reconnects automatically with exponential backoff if the server restarts or the network blips.
To also have it start automatically on every login/reboot, install it as a system service
(launchd on macOS, systemd --user on Linux):
taktiko installThe web app's computer status flips to online as soon as the daemon connects; on connect it reports
which agent CLIs are on your PATH (claude / codex / kimi) and candidate working directories, so the
agent editor only offers what this machine actually has.
Commands
| Command | What it does |
|---|---|
| taktiko pair <token> [--server <url>] [--name <name>] | Redeem a pairing token; store this machine as a daemon. |
| taktiko start [--server <url>] [--foreground] | Start the daemon in the background (detached). --foreground runs it inline. |
| taktiko stop | Stop the background daemon. |
| taktiko restart | Restart it (cycles the installed service in place, else the background process). |
| taktiko status [--json] | Show the local process (pid/uptime), server reachability, and service state. |
| taktiko logs [-n <lines>] [-f] | Print / follow ~/.taktiko/daemon.log. |
| taktiko install / taktiko uninstall | Add / remove the login service (auto-start on boot). |
| taktiko daemon [--server <url>] | Run the daemon in the foreground (what start and the service run under the hood). |
| taktiko --version / taktiko --help | Version / help. |
Config is read from ~/.taktiko/daemon.json, or from TAKTIKO_SERVER + TAKTIKO_DAEMON_TOKEN
environment variables if that file is absent.
Environment overrides
| Variable | Default | Meaning |
|---|---|---|
| TAKTIKO_SERVER | — | Server base URL (fallback when no config file). |
| TAKTIKO_DAEMON_TOKEN | — | Daemon token (fallback when no config file). |
| TAKTIKO_JOB_TIMEOUT_MS | 0 | Hard wall-clock cap per turn. 0 = no cap (default) — a long but active turn is never killed; the CLI reports its own errors and exits. |
| TAKTIKO_JOB_IDLE_MS | 600000 | Idle (no-output) cap — the hang detector that frees a wedged conversation. 0 disables it. |
| TAKTIKO_MAX_CONCURRENT | 20 | Max concurrent local CLI processes. |
Safety
- Single instance per machine — a pidfile (
~/.taktiko/daemon.pid) refuses a second daemon, and the server supersedes a stale connection, so a turn is never run twice (e.g. no double trades). - Bounded turns — every job has a hard timeout and an idle watchdog, with
SIGTERM→SIGKILLescalation, so a hung CLI can't wedge a conversation.
License
MIT
