Manifesto

"Fuck you, AI do what I tell you."

The tools are broken

Every agentic dev tool worth its hype ships with a hidden system prompt that takes the wheel out of your hands.

// THE LOOP PROBLEM

oh-my-opencode injects extra agentic loops in every scenario. The model can't request a debug checkpoint mid-task — it just plows ahead. When it gets stuck, it loops. When the loop fails, it loops again with more confidence.

// THE DASHBOARD PROBLEM

Adjacent operator-console products promise futuristic consoles and ship six-tile dashboards with a disk usage gauge. The marketing video has more features than the build.

The pattern repeats across the category: tools that confuse opinionation with removing your agency, that conflate helpful defaults with hidden hardcoded loops you cannot override. kaged exists because we want a different pattern.

Seven rules. No exceptions.

These are the load-bearing commitments. Every architectural decision, every spec, every line of code traces back to one of these.

PRINCIPLE 01
The operator is the principal.
The model is the agent. The operator is the principal. When the model needs information, judgment, or permission — it asks. When the operator wants to interrupt, override, or step in — they can. No "you're not allowed to ask the user" rules. No "the user said go so we must go forever" loops.
PRINCIPLE 02
The system prompt is yours.
Every prompt that shapes model behavior in kaged is readable, editable, and diff-able by the operator. There are no opaque corporate guardrails baked into the harness. If you want different behavior, you change the prompt. If you want kaged's defaults, you can read them. No black boxes.
PRINCIPLE 03
Sandbox by default, escalate by intent.
Subagents are [CAGED] unless the operator explicitly grants them broader scope. Filesystem access is allowlisted per project. Network access is allowlisted per subagent. The model cannot rm -rf your dotfiles unless you've decided that's something a model should be able to do.
PRINCIPLE 04
Web-first, terminal-as-capability.
The product is the web UI. The terminal is a capability the web UI exposes — a PTY in a browser, attachable from anywhere. We do not ship a CLI tool with a web bolt-on. We do not require SSH. The operator's phone is a first-class device.
PRINCIPLE 05
Self-hosted, anti-corporate, no telemetry.
kaged runs on your hardware. No managed cloud, no analytics, no "anonymous usage data," no signups. If you want logs, you collect them. The default is silence. If we ever ship a hosted version it will be opt-in and distinct — the core works without it forever.
PRINCIPLE 06
Doc-first, then TDD.
We will not vibe-code the harness we built to escape vibe-coded harnesses. Every load-bearing decision lands as an ADR. Every component lands as a spec before it lands as code. Tests precede implementation. This is slow. It is the point.
PRINCIPLE 07
Opinionated where it matters, transparent where it doesn't.
kaged makes strong choices: Bun, SQLite, the [CAGED] sandbox model, the project DSL, the primary→subagent topology. Where the choice is load-bearing we commit; where it isn't, we document the contract and let plugins fill it. The plugin SDK is the steam vent for "I wanted it different."

Sharp edges, declared.

Knowing what a project refuses to be is as useful as knowing what it is.

You know who you are.

The self-hosted operator. The one with a homelab and a public-facing tunnel. The one who reads ADRs before installing things. The one who has been bitten by an LLM loop wiping out work in progress.

The one who, when their tool's behavior changes, wants to know which prompt to edit, not which support ticket to file.

If that's not you, this will feel slow, austere, and intentionally inconvenient. That's because it is.

// repeated sixteen times until they hear you