Get Flywheel running.
Flywheel is open source (MIT). The standalone CLI needs only Python and git — no keys, no accounts — and the full demo sprint runs in about 60 seconds. This page covers install, the demo, running a real sprint for your company, and the approval workflow.
Quickstart: the 60-second demo
No Hermes, no API keys. Clone the repo, check your environment, and compile a full sample sprint for a fictional company (ExampleAI):
The demo runs the whole deterministic pipeline — intake → launch → backlinks → leads → creators → spend cards → trends → sprint report → validation — and writes a complete reviewable sprint to demo/demo-output/weekly_flywheel_sprint.md.
--demo. Real runs never fall back to fabricated data — missing research means a section is skipped cleanly, not faked.Prerequisites
- ✓Python 3.8+ and git — that's all you need for the CLI and the demo.
- +
SERPER_API_KEY(optional) — unlocks live backlink/listing and trend research via serper.dev. - +
STRIPE_API_KEY(optional, test keysk_test_...) — real test-mode payment authorization cards. Live keys are always refused; nothing is ever charged. - +A leads CSV (optional) — your own warm-outbound targets.
- +Hermes + a model provider (optional) — only for the chat / Slack / Telegram experience.
Flywheel runs on Linux, macOS, and Windows (the test suite runs on all three in CI).
Two ways to run Flywheel
Both paths use the same pipeline underneath. Pick the one that fits you:
A. Standalone CLI (start here)
What it is: run the Python pipeline directly from your terminal.
Needs: Python 3.8+ and git. Nothing else to try the demo.
Best for: trying Flywheel now, cron/automation, or wiring the pipeline into your own agent.
B. Chat agent (via Hermes)
What it is: the conversational GTM employee in terminal, Slack, or Telegram.
Needs: Hermes — a separate, external agent runtime from Nous Research — plus a model provider.
Best for: the "hire a GTM teammate" experience with live research and chat approvals.
Everything except the interactive chat surface runs standalone with no keys, so you can evaluate Flywheel end to end before deciding on Hermes.
Run a real sprint for your company
Standalone, no Hermes. The pipeline always produces launch planning and approval-gated spend cards from your product profile alone; each optional input adds another live section. Anything you don't supply is skipped cleanly — you get a partial sprint you can fill in and re-run.
What each input unlocks in a real (non-demo) run:
SERPER_API_KEY or your own --input JSON--leads-csv <file> or data/leads.csv--input (no headless source yet)Read the result in demo/demo-output/weekly_flywheel_sprint.md (or the folder you pass to --output-dir). Re-running for the same product continues the sprint and preserves your approvals; pass --new-sprint to start a fresh week.
Review and approve
Approvals are a persisted state machine (approvals.py) — real, durable state transitions enforced in code, not prompt-only concepts. Nothing can be approved or executed while the sprint is a draft, and only approved items can be executed.
Approval state lives in data/sprint_state.json with archived history in data/sprint_history.jsonl — both founder-local and gitignored. When the next sprint compiles, the prior sprint's approvals are archived and next week's focus is ordered by what you actually greenlit: more of what gets approved, less of what gets rejected.
Verify your install
Three commands confirm a fresh clone works end to end, no keys required:
doctor should report Python OK and all scripts present; the demo should end with ✓ Sprint compiled to demo/demo-output/weekly_flywheel_sprint.md; the suite (161 tests) should pass. If all three succeed, the pipeline is working on your machine.
Chat mode (via Hermes)
Then start with a prompt like:
Flywheel replies with a short acknowledgement, works quietly, then returns a draft review dashboard. Useful commands inside the chat: help, review launch, review outbound, start walkthrough, edit <section>: <change>, finalize sprint, approve <section>, show approvals.
Safety model
Flywheel is intentionally approval-gated, and the gates are enforced in code:
- ✕No auto-DMs. No auto-email. No auto-posting. No autonomous spend.
- ✓External actions require explicit founder approval, backed by the persisted state machine.
- ✓Stripe cards are simulated by default (
"simulated": true). With a genuine test key, real unconfirmed test-mode PaymentIntents are created — no payment method attached, manual capture, nothing ever charged. Live keys (sk_live_...) are refused outright. - ✓Demo fixture data is only used when
--demois passed — real runs never fabricate data. - ✓All sprint state is founder-local and gitignored. Nothing leaves your machine.
Further reading
Questions or issues? Open an issue on GitHub — or join the hosted-version waitlist and we'll follow up.