ACFS (Agentic Coding Flywheel Setup) is a "Rails installer" for agentic engineering - an end-to-end bootstrapper that transforms motivated beginners with zero Linux knowledge into fully-armed agentic engineers in approximately 10 minutes.
A beginner with a credit card and a laptop can:
- Visit a beautiful wizard website
- Follow step-by-step instructions to rent a VPS
- Paste one curl|bash command
- Type
onboardand learn the workflow - Start vibe coding with AI agents immediately
The installed toolstack creates a compounding loop:
- NTM orchestrates multiple agents in parallel
- Agent Mail provides coordination fabric (identities, inbox, leases)
- UBS flags bugs early with minimal friction
- CASS indexes all agent sessions for unified search
- CM transforms sessions into procedural memory
- BV provides task visibility via Beads
- CAAM enables instant auth switching
- SLB adds optional guardrails for dangerous commands
More agents → more sessions → better memory → better coordination → safer speed → better output → more sessions.
This is the exact flow ACFS must nail:
| Step | User Action | ACFS Responsibility |
|---|---|---|
| 1 | Choose laptop OS (Mac/Windows) | Show appropriate terminal/SSH instructions |
| 2 | Install a good terminal | Link to Ghostty/WezTerm (Mac) or Windows Terminal |
| 3 | Generate SSH key | Provide copy-paste command |
| 4 | Rent a VPS (~$40-56/mo) | Guide through OVH/Contabo (not Hetzner - new accounts have waiting period) |
| 5 | Choose Ubuntu 25.x image | Highlight exact selection |
| 6 | Paste SSH public key in provider UI | Screenshot guidance |
| 7 | SSH into server | Copy-paste command |
| 8 | Paste ACFS one-liner | The magic moment |
| 9 | Reconnect as ubuntu | If was root |
| 10 | Type onboard |
Interactive tutorial begins |
ACFS consists of three products in one repo:
Tech Stack:
- Framework: Next.js 16 App Router
- Runtime: Bun
- Hosting: Vercel + Cloudflare (cost optimization)
- State: URL params + localStorage (no backend)
Design Principles:
- One action per screen
- Copy button on every command
- "I did it" checkbox gates "Next"
- Collapsible troubleshooting sections
Contract:
- Works when run as
root(fresh VPS) - Works when run as
ubuntuwith sudo - Safe to run twice (idempotent)
- Handles connection drops + re-runs
Phases:
- Preflight + confirm OS
- Create/normalize
ubuntuuser + sudoers - Base packages (apt)
- Shell (zsh + oh-my-zsh + p10k + plugins)
- Dev toolchain (bun, uv, rust, go, tmux, rg, ast-grep, etc.)
- Agent stack (claude/codex/gemini CLIs + aliases)
- Flywheel stack (ntm, slb, ubs, cass, cm, bv, caam, mcp_agent_mail)
- Post-install UX (onboard + doctor + summary)
Checkpointing:
- Progress written to
/var/log/acfs/install.log - State stored in
~/.acfs/state.jsonwith completed phases - Re-runs skip completed phases
Purpose: Interactive habit installation, not documentation.
7 Missions: 0. Welcome + what you now have
- Linux navigation in 3 minutes
- SSH and persistence (why tmux matters)
- tmux basics (attach/detach/panes)
- Your agent commands (cc/cod/gmi + login)
- NTM as command center
- Show NTM command palette prompts
- The flywheel loop (the complete workflow)
-
"No jargon until after success"
- Every step reads: "Do this" → "You should see this" → "If not, click here"
-
Single action per screen
- One button or one command with Copy button
-
Always include a "verify" micro-step
- After SSH keygen:
ls ~/.ssh→ confirmid_ed25519.pubexists
- After SSH keygen:
-
Idempotent installer, resumable by default
- Handle: closed terminals, lost connections, paste twice, run as root accidentally
-
Trust through visibility
- Show what you're doing
- Log everything
- Offer
--dry-runmode
| Aspect | Value |
|---|---|
| User | ubuntu |
| Home | /home/ubuntu |
| Shell | zsh |
| Sudo | Passwordless (vibe mode) |
| Workspace | /data/projects |
/home/ubuntu/
├── .acfs/ # ACFS-managed configs
│ ├── zsh/
│ │ └── acfs.zshrc
│ ├── tmux/
│ │ └── tmux.conf
│ ├── bin/
│ │ ├── onboard
│ │ ├── acfs
│ │ └── acfs-doctor
│ ├── docs/
│ │ └── ntm/
│ │ └── command_palette.md
│ ├── logs/
│ │ └── install.<timestamp>.log
│ └── state.json
├── .zshrc # Tiny loader for acfs.zshrc
├── .zshrc.local # User overrides
├── .p10k.zsh # Powerlevel10k config
├── Development/
├── Projects/
└── mcp_agent_mail/ # Agent Mail installation
/data/
└── projects/ # Primary workspace
# Coding agents (dangerously enabled for vibe mode)
alias cc='NODE_OPTIONS="--max-old-space-size=32768" ENABLE_BACKGROUND_TASKS=1 claude --dangerously-skip-permissions'
alias cod='codex --dangerously-bypass-approvals-and-sandbox -m gpt-5.2-codex -c model_reasoning_effort="xhigh" -c model_reasoning_summary_format=experimental --enable web_search_request'
alias gmi='gemini --yolo --model gemini-3-pro-preview'
# Flywheel stack shortcuts
alias am='cd ~/mcp_agent_mail && scripts/run_server_with_token.sh'
alias update='sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y'
alias uca='claude update && bun install -g @openai/codex@latest && bun install -g @google/gemini-cli@latest'The manifest (acfs.manifest.yaml) is the single source of truth for all tools installed.
version: 1
name: agentic_coding_flywheel_setup
id: acfs
defaults:
user: ubuntu
workspace_root: /data/projects
mode: vibe
modules:
- id: base.system
description: Base packages + sane defaults
install: [...]
verify: [...]
- id: stack.ntm
description: Named tmux manager (agent cockpit)
install: [...]
verify: [...]- base. - System fundamentals (curl, git, build-essential)
- users. - User account setup (ubuntu, sudoers, SSH)
- shell. - Zsh, oh-my-zsh, p10k, plugins
- cli. - Modern CLI tools (lsd, bat, fzf, etc.)
- lang. - Language runtimes (bun, uv, rust, go)
- tools. - Dev tools (atuin, ast-grep, tmux)
- db. - Databases (postgres18)
- cloud. - Cloud CLIs (vault, wrangler, supabase, vercel)
- agents. - Coding agent CLIs (claude, codex, gemini)
- stack. - Dicklesworthstone stack (all 8 tools)
| Tool | Command | Purpose | Key Feature |
|---|---|---|---|
| NTM | ntm |
Named Tmux Manager | Agent cockpit with spawn/send/broadcast |
| MCP Agent Mail | am |
Agent coordination | Identities, inbox/outbox, file leases |
| Ultimate Bug Scanner | ubs |
Bug scanning | 1000+ patterns, easy-mode guardrails |
| Beads Viewer | bv |
Task management | Kanban, graph, insights TUI |
| CASS | cass |
Session search | Unified agent history indexing |
| CASS Memory | cm |
Procedural memory | Episodic → working → procedural |
| CAAM | caam |
Auth switching | Sub-100ms account swap |
| SLB | slb |
Guardrails | Two-person rule for dangerous commands |
Each tool has:
- Official one-liner installer
- Easy-mode flag where applicable
- Verify command(s)
- Alias or PATH addition
Example:
- id: stack.mcp_agent_mail
description: Like gmail for coding agents
install:
- |
curl -fsSL "https://raw.githubusercontent.com/Dicklesworthstone/mcp_agent_mail/main/scripts/install.sh?$(date +%s)" | bash -s -- --yes
verify:
- command -v am
- curl -fsS http://127.0.0.1:8765/health || trueapps/web/
├── app/
│ ├── layout.tsx
│ ├── page.tsx # Landing/Welcome
│ └── wizard/
│ ├── layout.tsx # Stepper wrapper
│ ├── os/page.tsx # Step 1: Mac/Windows
│ ├── terminal/page.tsx # Step 2: Install terminal
│ ├── ssh-key/page.tsx # Step 3: Generate SSH key
│ ├── vps/page.tsx # Step 4: Rent VPS
│ ├── create-vps/page.tsx # Step 5: Create + attach key
│ ├── connect/page.tsx # Step 6: SSH in
│ ├── install/page.tsx # Step 7: Paste one-liner
│ ├── reconnect/page.tsx # Step 8: Reconnect as ubuntu
│ ├── status/page.tsx # Step 9: ACFS Status Check
│ └── onboard/page.tsx # Step 10: Run onboard
├── components/
│ ├── Stepper.tsx
│ ├── CommandCard.tsx # OS-aware command with copy
│ ├── ProviderChooser.tsx # VPS provider cards
│ ├── Checklist.tsx # Status check display
│ └── PasteDoctorJson.tsx # Optional auto-check
└── lib/
├── wizardSteps.ts # Step definitions
├── doctorChecks.ts # Check IDs for status page
└── manifest.ts # Manifest types
CommandCard:
- OS-aware command rendering
- Copy button
- "I ran this" checkbox
ProviderChooser:
- Cards for OVH, Contabo, Other
- Expandable guidance per provider
Stepper:
- Left sidebar showing all steps
- Current step highlighted
- Completed steps checkmarked
Single command to verify installation is complete and working.
ACFS Doctor v0.1.0
User: ubuntu ✅
Mode: vibe (passwordless sudo: enabled) ✅
OS: Ubuntu 25.x ✅
Workspace: /data/projects ✅
Shell
PASS ✅ zsh installed (zsh 5.x)
PASS ✅ oh-my-zsh installed
PASS ✅ powerlevel10k installed
...
Core tools
PASS ✅ bun (x.y.z)
PASS ✅ uv (x.y.z)
...
Agents
PASS ✅ claude (available)
PASS ✅ codex (available)
PASS ✅ gemini (available)
PASS ✅ aliases: cc cod gmi
Cloud/DB
PASS ✅ vault (x.y.z)
PASS ✅ postgres (psql 18.x)
...
Dicklesworthstone stack
PASS ✅ ntm (available)
PASS ✅ slb (available)
...
Next: run `onboard`
0= all PASS (warnings allowed)1= one or more FAIL2= doctor itself crashed
acfs doctor --json outputs structured data:
{
"acfs_version": "0.1.0",
"timestamp": "2025-12-19T12:34:56Z",
"mode": "vibe",
"user": "ubuntu",
"checks": [
{
"id": "identity.user_is_ubuntu",
"label": "Logged in as ubuntu",
"status": "pass",
"details": "whoami=ubuntu",
"fix": null
}
],
"summary": { "pass": 34, "warn": 1, "fail": 0 }
}Stable IDs for mapping to website checklist:
identity.user_is_ubuntuidentity.passwordless_sudoworkspace.data_projectsshell.zsh,shell.ohmyzsh,shell.p10kshell.plugins.*tool.bun,tool.uv,tool.cargo,tool.go,tool.tmux,tool.rg,tool.sgagent.claude,agent.codex,agent.geminiagent.alias.cc,agent.alias.cod,agent.alias.gmicloud.vault,cloud.postgres18,cloud.wrangler,cloud.supabase,cloud.vercelstack.ntm,stack.slb,stack.ubs,stack.bv,stack.cass,stack.cm,stack.caam,stack.mcp_agent_mail
Deliverables:
- Website wizard skeleton (Mac + Windows, one provider)
install.shthat:- Creates
ubuntuuser - Installs zsh + shell config via
~/.acfs - Installs tmux + ntm
- Installs cc/cod/gmi dependencies
- Installs basic
onboard
- Creates
Acceptance:
- A nontechnical user can get from VPS purchase →
onboardwithout help
Deliverables:
- All 8 Dicklesworthstone tools installed and configured
acfs doctorshows green across the board
Deliverables:
- Interactive missions
- "Send this prompt to all agents" integration
- Vendored NTM command palette viewer
Acceptance:
- A beginner can successfully spawn agents and run first multi-agent workflow
Deliverables:
- Provider-specific screenshot guides (OVH/Contabo/etc)
- Error-driven help (SSH permission denied, host key, firewall)
- "Already have a VPS" and "Local-only" branches
Acceptance:
- Support burden drops because wizard answers top 20 failure modes
Deliverables:
- GitHub Actions that:
- Spins Ubuntu VM
- Runs ACFS installer
- Verifies every module
- Runs shellcheck on scripts
--dry-runmode
Deliverables:
- Cloudflare caching rules
- Analytics
- SEO optimization
- Performance optimization
- Deploy Next.js site to Vercel
- Use Bun runtime support
- Free tier should suffice initially
- Cloudflare DNS (free)
- Aggressive caching for static wizard pages
- Cloudflare Analytics (free)
- Optional: Cloudflare Turnstile for forms (no CAPTCHA cost)
Even for curl|bash, design responsibly:
- Show "What this script changes"
- Show "Where logs go"
- Show "How to uninstall/revert"
--dry-run- prints plan without changing anything--print- prints exact scripts/versions it will fetch- Optional checksum verification for tool installers
Located at ~/.acfs/zsh/acfs.zshrc
Key features:
- No duplicate PATH blocks
- No duplicate aliases
- Safe
chpwdhook instead of overridingcd() - Proper init ordering (atuin path before init)
- All tools only aliased if present
- Local overrides via
~/.zshrc.local
The main ~/.zshrc becomes a tiny loader:
# ACFS loader
source "$HOME/.acfs/zsh/acfs.zshrc"
# user overrides live here forever
[ -f "$HOME/.zshrc.local" ] && source "$HOME/.zshrc.local"After onboard, offer:
ntm spawn myproject --cc=2 --cod=1 --gmi=1This makes the user feel: "I just became an agentic engineer."
Type acfs doctor anytime to verify everything is working.
acfs update- Updates apt packages
- Updates bun globals
- Optionally re-runs tool installers
- Beginner-obsessed UX - Every decision optimized for "I have no idea what I'm doing"
- One-liner magic - The entire complexity hidden behind a single paste
- Genuine flywheel - Tools reinforce each other, not just a random toolbox
- Trust through visibility - Even in "vibe mode", users can see what's happening
- Resumable by default - Handle real-world failure modes gracefully
- Manifest-driven - Single source of truth makes updates tractable
The goal is to make agentic engineering accessible to anyone motivated enough to rent a VPS and follow instructions. ACFS is the bridge from "I want to try this AI coding thing" to "I'm running multiple agents coordinating on my project."