systemix docs

Getting started

Install

npm install -g systemix
# or
npx @getsystemix/cli@latest init

Run the init wizard

/systemix-init

The wizard walks you through:

  1. Instance brief — your product, your ICP, what you're trying to learn
  2. Design setup — scaffold a design/ folder, point at an existing one, or skip
  3. Signal setup — wire PostHog (recommended) or skip for now
  4. 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.yaml

Init 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-experiment

What happens daily

Put systemix loop on a cron (or run it by hand) and each day it:

  1. pulls fresh numbers into every running experiment,
  2. queues a close-proposal card when the evidence is strong enough (you decide),
  3. 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.

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.

On this page