tinycmdr

An autonomous ops agent for self-hosted models.

One Python file · three dependencies · any OpenAI-compatible endpoint — llama.cpp, vLLM, SGLang, Ollama, or a cloud API.

GitHub Latest release MIT license

tinycmdr runs on the machine it manages. You send it a task; it does the work with real tools (shell, execute_code, edit_file, fetch_url, …), narrates what it is doing, and keeps its state in plain files beside itself. It is built for small and local models: the prompt is a stable, cache-friendly prefix, and the runtime is built so a confused model cannot wedge your inference slot.

Reach it from a terminal or chat (Mattermost, Telegram) — one process, one vocabulary, the same conversations either way.

Install

Windows — PowerShell, no administrator rights:

irm https://github.com/trappsquid/tinycmdr/releases/latest/download/install.ps1 | iex

Linux and macOS — one line; it asks a few questions and writes nothing until you confirm:

curl -fsSL https://github.com/trappsquid/tinycmdr/releases/latest/download/install.sh | bash

Either installer fetches the newest build, creates its own private Python environment, and starts the agent with the machine. Needs Python 3.10–3.12. A Linux system install and a macOS install with sudo ask for root; a Windows install and a Linux user install never do.

Start it

tinycmdr setup        # once: endpoint, chat gateways, search consent
tinycmdr              # the session as a full-screen terminal app
tinycmdr --cli        # the same session, inline cards in the scrollback
tinycmdr --once "…"   # one task, then exit

Use it

The same verbs work in a shell (tinycmdr <verb>), in the interactive CLI (/tinycmdr <verb>), and in chat:

VerbWhat it does
statusversion, folder, model, endpoint, context, log, instance
doctorcheck this install and name what is wrong (exit 1 when something is)
healthone line and an exit code, no network — for scripts
modelpick a model from a list you move through; a dead endpoint offers the wizard
logs · version · proclog tail, version, this install's process and lock state
updatepull the published build
restartrestart through this host's own door (launchd, systemd, Task Scheduler)

Extend it

Prose skills. Drop a runbook folder into skills/ and it is live on the next message.

Custom tools. Drop a .py into tools/ and it is callable from the next call — listed in the prompt by name and shelf.

Update and remove

tinycmdr update      # pull the published build
tinycmdr restart     # start running it

Removal is one command per platform; see the README.