Getting started
Install
npm install -g systemix
# or
npx @getsystemix/cli@latest initRun the init wizard
/systemix-initThe wizard walks you through:
- Instance brief — your product, your ICP, what you're trying to learn
- Design setup — scaffold a
design/folder, point at an existing one, or skip - Signal setup — wire PostHog (recommended) or skip for now
- First experiment — ICP · JTBD · hypothesis · the AI workflow that tests it · the metric you'll measure
What you have after init
experiments/
<id>.mdx ← your first experiment (an _example.mdx if you skipped authoring)
LEARNINGS.md ← the notebook of what closed experiments taught you (starts blank)
goals/ ← the outcomes the experiments aim at
design/
DESIGN.md ← the design substrate (optional; scaffold, point, or skip)
guardrails.mdx ← the rules drift checks enforce
tokens.css ← code-first tokens
.claude/skills/ ← the loop skills, installed project-scoped
CLAUDE.md ← the per-instance loop orchestrator
systemix.config.yamlInit also registers the systemix-mcp server (repo .claude.json, plus
Claude Desktop if present) and updates .gitignore. Commit experiments/,
design/, .claude/skills/, CLAUDE.md, and systemix.config.yaml so the
instance is reproducible.
Next: run the loop
Once an experiment is authored, the loop carries it from bet to written decision:
/write-variants → /measure → /close-experimentWhat happens daily
Put systemix loop on a cron (or run it by hand) and each day it:
- pulls fresh numbers into every running experiment,
- queues a close-proposal card when the evidence is strong enough (you decide),
- and when the loop is idle — or a new learning just landed — queues an
experiment-proposal card suggesting the next bet, drafted from
LEARNINGS.md.
It never creates or closes anything itself. Accept a proposal with /init-experiment; close with /close-experiment.
Connect a signal (optional but recommended)
Without PostHog wired, /measure will log a warning and skip the evidence fetch — experiments still author and close, just without live data.
To wire PostHog, run /connect-signal after init. It guides you through the capture key, the reverse-proxy /ingest config (for ad-blocker bypass), and the NEXT_PUBLIC_POSTHOG_KEY env var.