single static binary · zero dependencies · local-first

ipsupport-code

A self-learning local coding agent for LM Studio — in a single static binary.

It drives your own local model through a reason → act → observe loop over a handful of fat tools, recovers from errors using lessons it learned on past runs, and gets better over time. Local by default — but the same loop runs any OpenAI-compatible provider (OpenAI, Anthropic, Grok, Groq, OpenRouter, Z.ai), and it can delegate a task to a sub-agent on a different model. Your machine, your keys, under a permission policy you control.

ci release license go
$ curl -fsSL https://raw.githubusercontent.com/ipsupport-llc/ipsupport-code/main/scripts/install.sh | sh
PS> iex (irm https://ipsupport-llc.github.io/ipsupport-code/install.ps1)

macOS · Linux · Windows — one binary, no Python, no runtime, no dependencies · verifies SHA-256

ipsupport-code
 ipsupport-code


 add a /health endpoint and run the tests
  ⚙ file edit  server.go   +6 −0
  ⚙ run  go test ./...
  → exit 0   ok  ./...  (0.4s)
  ✦ noted  tests run with: go test ./...
  Added GET /health returning 200 "ok"; all tests pass.

 review that change across grok and claude, then merge
  ⇉ spawned grok    · grok-4.3 · ~/myproject
  ⇉ spawned claude  · claude-sonnet · ~/myproject
  ✓ grok finished   ✓ claude finished
  → both: correct. grok wants a 503-case test; claude flags a missing Content-Type.
  Reviewer agrees it's solid; I'll add the 503 test.
  NEXT: add the 503-case test

qwen2.5-7b-instruct · ~/myproject · ctx 4.0k/8k · ↑1.6k · ready

# what it does

Built for micro-tasks on your own machine. It won't match a frontier model — it's a private, controllable agent that compounds what it learns.

Single static binary

One executable, CGO_ENABLED=0 — no Python, no Node, no runtime, no virtualenv to rot. Download, run, done. It updates itself in place.

Self-learning

After each task it reflects and writes durable lessons and project facts to disk, then folds them into the next run. Tool errors are met with fixes it found before.

Fat tools

One tool per domain — file · run · git · web · calc — so the catalog stays tiny and small models route well. Native tool-calls only.

Your model, your machine

LM Studio by default over its OpenAI-compatible server. Nothing leaves your box unless you point it at a cloud provider.

Multi-provider

One /ai key away from OpenAI, Anthropic, Grok, Groq, OpenRouter, or Z.ai — switch models live with /model (search its 300+).

Sub-agents

Delegate a task to a sub-agent on another model — run locally, then have a frontier model review the diff, or compare a review across 2–3 models. Paid spawns ask first.

Sessions & usage

Per-name sessions with restore-on-startup, plus a token ledger with day/week/month rollups and estimated $ cost by model.

Permission policy

Allow/deny globs, a workspace jail, and a non-overridable safety floor. A plan / auto toggle and non-stealing approval prompts.

Skills

Downloadable, toggleable instruction packs — load extra know-how only when the topic fits, so the prompt stays lean.

Interactive /config & /usage

A settings panel you navigate with the arrow keys, plus a local token ledger broken down by day and provider/model.

A real TUI

Live-streamed tool calls, markdown answers, syntax-highlighted diffs, multi-line paste, and a status bar with model · context · tokens.

# quickstart

Three steps from nothing to a running agent in your project.

  1. Install — run the one-liner above (or grab an archive from releases). It lands in ~/.local/bin.
  2. Point it at a model — start LM Studio, load a model, and start its local server. Prefer the cloud? ipsupport-code then /ai key openrouter sk-… and /ai openrouter.
  3. Run itcd your-project && ipsupport-code, then type a task. It edits files, runs commands, and reports real output — under your permission policy.

# commands & keys

Every feature is a slash-command or a keystroke — /help shows this inside the agent too.

/Commands

/help · /status · /usage · /budget · /config
/ai & /ai key · /model · /reasoning · /agents · /jobs
/goal · /diff · /rewind · /history · /knowledge
/skills · /permissions · /sessions · /cd · /mcp
/new · /clear · /compact · /plan·/auto · /reflect
/loop · /update · /offline · /rename · /color

Keys

Enter send · alt+enter newline
Tab complete a /command or @file path
ctrl+r reverse-search prompt history
shift+tab plan ⇄ auto mode
ctrl+u clear input · ctrl+l clear screen
answer approval / edit queued · esc cancel · ctrl+c quit

Sub-agents

Define profiles in /config → Sub-agents (provider → model → name). Then ask, e.g. "review internal/tool across grok and claude, then merge." They run in parallel, each jailed to its own directory. Manage with /agents add|add-tool|rm|execadd-tool plugs in local CLI agents (codex, claude, aider…); relax the per-spawn prompt with /permissions agents on. Or fire one in the background and keep working — its result folds into the next turn; watch them with /jobs.

# works with

OpenAI-compatible at the core, so the agent is model-agnostic — local first, cloud when you want it.

LM Studio — local, default OpenAI Anthropic Grok (xAI) Groq OpenRouter Z.ai (GLM) codex / claude / aider (as sub-agents)