A small, friendly setup kit that makes ruflo actually work the way it promises β reliable memory, active self-learning, verified security, and an at-a-glance status line β especially on modern Node (24/26), where a stock install quietly breaks in ways that still look "green."
One-time setup per machine. One command to heal after upgrades. Nothing committed to your repos unless you mean it.
ruflo is an AI orchestration toolkit for Claude Code β it gives your AI assistant a memory that survives across sessions, the ability to learn from what works, multi-agent coordination, and security scanning.
The catch: on the versions of Node.js most developers run today, ruflo silently falls back to a degraded mode. It still says "β OK", but underneath:
- πΎ the memory that's supposed to persistβ¦ doesn't (writes vanish),
- π§ the self-learning that's supposed to be onβ¦ stays asleep,
- π the optional quality-engineering add-on won't even finish installing,
- π and you have no easy way to see which of these is actually working.
This kit closes all of those gaps with a few small, reversible helper scripts β and gives you a status line that shows, at a glance, exactly what's live.
π Not a developer? You only need three commands:
./install.sh(once), thenruflo-onboardinside a project, andruflo-resyncafter any upgrade. The rest of this README explains the "why" for the curious.
| You want⦠| Stock ruflo on Node 24/26 | With this kit |
|---|---|---|
| πΎ Memory that persists across sessions | Lost data pre-3.10.6; native by default on β₯3.10.6 (never verified) | Saves for real, and verifies it landed on disk |
| π§ Self-learning that's actually on | Reports "Not loaded" | Active & proven (trains β patterns persist) |
| π‘οΈ Security scanning | Ships but undocumented/unverified | Verified: scan, secrets, prompt-injection defense |
| π Agentic-QE quality fleet (optional) | aqe init fails on Node 24/26 |
Installs cleanly (same bug, auto-fixed) |
| π Knowing what's active | No indication | Status-line footer shows π§ / π‘οΈ / π live |
| π Surviving an upgrade | Re-breaks silently every upgrade | ruflo-resync β one command re-heals everything |
| π° Token budget | ~84k tokens/session of MCP tool defs | MCP optional; CLI-first saves the tokens |
Modern Node.js (24 and 26) changed its native-addon ABI. ruflo's deeper dependencies declared an old better-sqlite3 with no prebuilt for those Node versions; npm skipped it silently and ruflo dropped to a pure-JavaScript SQLite fallback whose write path lost data while printing success. ruflo v3.10.6 fixed this upstream (#2219) with an npm overrides entry that forces better-sqlite3 β₯12.8.0 (Node 20β26 prebuilts), so on current ruflo the memory bug no longer bites by default.
What this kit still adds, because the override doesn't cover everything:
- πΎ Verifies memory actually persists β a real storeβdisk check, instead of trusting
doctor's "healthy". (The data-loss bug itself is now fixed upstream on ruflo β₯3.10.6.) - π§ Activates & proves self-learning β puts the native binary in place where needed and asserts the ruvector engine (SONA, HNSW, ReasoningBank) is genuinely on, not just reported on.
- π Agentic-QE won't initialize β it's a separate package (
agentic-qe) not covered by ruflo's override, so it still hits the same Node-ABI wall;ruflo-setup-aqefixes it. - π§Ή MCP-cruft, token, and daemon hygiene β strips committed
.mcp.json, keeps sessions CLI-lean, and (as of the token-consumption work) makes the background daemon opt-in + self-reaping.
π A note on prior art. A colleague, Ciprian Melian, wrote an excellent project-scoped repair kit as a gist (link) that pairs ruflo with agentic-qe. This kit builds on those ideas but takes a machine-wide, upgrade-safe approach β and our investigation found that several of the gist's source patches are now already upstream in ruflo 3.10.5 (the real remaining lever is the missing native binary, not the source patches). The full story is in docs/BACKGROUND.md.
The deep dive β ABI tables, the exact files, why "HNSW: Not loaded" is a cosmetic lie β lives in docs/BACKGROUND.md.
- π©Ή Native SQLite, everywhere ruflo needs it β
ruflo-patch-nativeswaps the broken dependency for one that works on Node 24/26. - π§ Activated + proven self-learning β
ruflo-enable-learningturns ruvector on and asserts it (5 real capability probes, not the misleading status text);ruflo-learning-verifytrains a cycle and confirms patterns persist to disk. - π‘οΈ Verified security surface β
ruflo-security-verifyconfirms@claude-flow/security+@claude-flow/aidefenceload, that prompt-injection defense actually fires, and flags the known CVE-database gap. - π Opt-in agentic-qe β
ruflo-setup-aqefixes the same native-SQLite bug in agentic-qe, then initializes it (with half-init repair). - π A status-line footer that shows π§ self-learning, π‘οΈ security, and π agentic-qe β each only when genuinely active.
- π
ruflo-resyncβ one command to re-apply everything after a ruflo or agentic-qe upgrade. - π§Ή Clean repos & cheap sessions β strips MCP cruft
ruflo initwould commit, pins an absolute memory path, and keeps MCP optional to save ~84k tokens/session. - β©οΈ Reversible β
uninstall.shbacks up and removes the machine-level setup;--this-projectalso reverts a repo's statusline patches.
This kit configures and heals ruflo β it doesn't bundle it. You need a few
things on your machine first. install.sh checks for these and can install the
npm packages for you (interactively, or via flags).
Required (install.sh aborts if missing):
| Tool | Why | Get it |
|---|---|---|
| Node.js (20β26 supported) | runtime for ruflo & the helpers | https://nodejs.org |
| npm | installs the global packages | ships with Node.js |
ruflo |
the orchestration toolkit this kit configures | npm i -g ruflo (install.sh can do this) |
Recommended (install.sh warns, then continues):
| Tool | Why |
|---|---|
claude (Claude Code) |
the agent this all runs inside |
sqlite3 |
the status line + memory verifications read the DBs |
git |
to clone/update this kit |
Optional (only for the QE fleet):
| Tool | Why | Get it |
|---|---|---|
agentic-qe (aqe) |
the standalone quality-engineering fleet (π segment) | npm i -g agentic-qe (install.sh --with-aqe) |
π "Security" and "learning" are not separate installs.
@claude-flow/security,@claude-flow/aidefence, and the ruvector self-learning engine all ship inside ruflo β this kit activates and verifies them. So the "full boat" is just two npm packages (ruflo+agentic-qe); the kit lights up the rest.
The fastest path β install the kit, prereqs, and heal in one go:
# 1. Get the kit
git clone https://github.com/pacphi/ruflo-machine-ref.git && cd ruflo-machine-ref
# 2. Bootstrap the machine (pick your level)
./install.sh # friendly interactive onboard (asks per step)
./install.sh --full --yes # "full boat": ruflo + agentic-qe + heal, no prompts
./install.sh --ruflo-only # just ruflo + heal
./install.sh --minimal # only lay down the kit files (you have the prereqs)
exec $SHELL # load the helper functions
# 3. In any project you work in
cd ~/my-project
ruflo-onboard # clean setup + prove self-learning persists, in one step
ruflo-onboard --aqe # β¦and also initialize the agentic-qe fleet hereTry ./install.sh --dry-run first to preview exactly what it will do.
Key distinction:
install.shruns once on the machine and never inside a project repo β it deploys the shell functions and heals global packages.ruflo-onboardruns once per project and never touches global state. If you're unsure which to use, see Which command do I run?.
πͺ Prefer CLI-only (no MCP, ~84k tokens saved per session)? The Quick Start above gives you CLI-only by default β ruflo-setup-machine is a separate, optional step that registers the ruflo MCP server. Skip it (the default) and Claude Code drives ruflo through plain Bash using the installed ~/.claude/CLAUDE.md reference. Run it only if you specifically want the MCP tool schema available in-session.
| Command | What it does |
|---|---|
π ruflo-resync [--aqe] |
The one you'll use most. After any ruflo/agentic-qe upgrade, re-applies everything the upgrade wipes: native SQLite (ruflo + agentic-qe) + self-learning assert + statusline footer. --aqe also refreshes QE skills. |
π ruflo-onboard [--with-security] [--aqe] |
Per-repo, run from inside it. One command: clean setup-project β prove learning persists β (--aqe) initialize agentic-qe. Prints what's active + what's next. |
ποΈ ruflo-setup-project [--with-security] |
Per repo: clean init, strip MCP cruft, pin an absolute DB path, native patch, activate memory/swarm/daemon, verify a write persists, sanitize CLAUDE.md, heal the status line. --with-security adds a security pass. |
π©Ή ruflo-patch-native [--check] |
Make ruflo's agentdb use native better-sqlite3 on Node β₯24. |
π§ ruflo-enable-learning [--check] |
Activate ruvector self-learning and assert it (5 capability probes). |
β
ruflo-learning-verify [--keep] |
Prove the learning loop: train in an isolated dir, assert patterns persist 0 β N on disk. |
ποΈ ruflo-neural-train [argsβ¦] |
Thin passthrough to ruflo neural train in the current project (args pass through), then advances the live micro-LoRA tracker. |
π ruflo-lora-track |
Advance the live micro-LoRA adaptation tracker now (ΞβWβ on the SONA line). Otherwise auto-refreshes on each statusline render as ruflo learns new patterns from your work. |
π‘οΈ ruflo-security-verify [--quick] |
Verify @claude-flow/security + aidefence load, injection defense fires, scan/secrets run; flag the CVE-DB gap. |
π ruflo-setup-aqe [--force] |
Opt-in. Fix agentic-qe's native-SQLite bug, then initialize it in a repo (with half-init repair). |
πΎ ruflo-memory-checkpoint [db] |
Force a WAL checkpoint to recover stale memory reads. |
π§½ ruflo-remove-mcp |
Remove ruflo MCP from all scopes (recover ~84k tokens/session). |
π ruflo-setup-machine |
One-time: register ruflo MCP at user scope (all projects). Optional. |
π ruflo-parity-test [--cleanup] |
20-check end-to-end memory smoke test in an isolated /tmp dir. |
π ruflo-reference-refresh [--diff|--regenerate] |
Inspect/rebuild the machine-wide CLAUDE.md ruflo block from the template. |
π ruflo-token-audit [--days N] [--json] |
Where's my usage going? Comprehensive Claude Code usage report across N days (default 7): tokens by day/model/project, tool & MCP usage, subagent fan-out, web-tool calls, cache efficiency, busiest sessions, hourly activity, and a cross-reference of running ruflo daemons vs your top-burn projects. The engine is bundled inside the skill (works standalone) and also installed here on PATH. |
π‘ Token-audit skill. The kit also installs a user-scope Claude skill,
ruflo-token-audit, available in every project. Just ask Claude in plain language β e.g. "Audit my Claude Code token usage for the last 7 days β what's burning my tokens?" β and it runs the audit, checks for runaway daemons, and recommends fixes. Background: docs/usage/token-consumption-findings-and-mitigation-2026-06.md.
install.sh is the front door you walk through once; the functions are how you live in the house.
install.sh |
The functions | |
|---|---|---|
| Nature | a script run from the kit repo | commands on your PATH, available everywhere after install |
| Frequency | once per machine (+ rarely, to re-lay the kit) | ongoing, day-to-day |
| Scope | machine-level bootstrap | machine-recurring and per-project |
On first run the functions aren't sourced yet, so install.sh sources them
in-process and calls the same ruflo-patch-native / ruflo-enable-learning
to heal β one source of truth, no drift. After that you never need install.sh
for healing again.
| Situation | Run this | Why not the other |
|---|---|---|
| π Brand-new machine | install.sh |
nothing's on PATH yet β only the script can bootstrap |
π Re-cloned kit / new shell / wiped ~/.local/bin |
install.sh |
re-lays the kit files (idempotent, backs up) |
π₯ After git pull on this kit repo |
install.sh --minimal |
redeploys updated shell functions + CLAUDE.md template; ruflo-resync doesn't touch kit files |
β¬οΈ After npm i -g ruflo@latest (or aqe) |
ruflo-resync |
the upgrade only wiped native binaries β re-running install.sh is the heavier wrong tool |
| π Starting in a new repo | ruflo-onboard |
per-project; install.sh is machine-level and won't touch your repo |
| π Routine checks | functions (ruflo-parity-test, ruflo-learning-verify) |
no reason to re-bootstrap |
Rule of thumb:
- "I'm setting up" β
install.sh(once). - "I upgraded ruflo/aqe" β
ruflo-resync. - "I'm starting work in a repo" β
ruflo-onboard.
When set up with this kit, a footer is appended below ruflo's own status line. It's append-only β it never rewrites ruflo's lines, so a ruflo update can't break it. Each ruflo feature renders on its own line (so the live metrics are individually scannable), and each piece appears only when that feature is genuinely active:
β RuFlo V3.10.46 β you β β main β Opus 4.x β
ποΈ DDD Domains β¦ π€ Swarm β¦ π§ Architecture β¦ β ruflo's own lines + the kit's
π AgentDB β¦ β per-feature lines (all ruflo)
π§ SONA [βββββ] 70 patterns Β· 132 traj Β· β‘ HNSW Β· ΞβWβ0.0039 +0.0021β² n70 β
π RL Ξ΅1.00β Β· Ξ΄Μ0.779β Β· |Q|6 Β· upd9 β live route Q-learner metrics
π‘ aidefence on β
βββββββββββββββββββββββββββββββββββββββββββββββββββββ β divider (matches ruflo's header rule)
π Agentic QE V3.10.7 π 23 patterns Β· π§ 114 traj Β· 𧬠543 vecβ‘ Β· πΎ 16MB
Every field renders only when its data is actually present (numbers above are illustrative):
- π§ SONA β
[bar]is a volume gauge (~10 patterns/dot);patterns/trajfrom.claude-flow/neural/stats.json(these now persist across restarts, ruflo #2245);β‘ HNSWonly when a vector index exists. - π RL β live route Q-learner metrics, shown only once the learner has actually run (
updateCount > 0):Ξ΅β (exploration),Ξ΄Μβ (mean TD error),|Q|(distinct task-states β a real count since the encoder fix F3, ruflo #2239, fixed in 3.10.11, confirmed still correct in 3.10.46: 6 tasks β 6 distinct Q-states),upd(updates). Read fs-only from.swarm/q-learning-model.jsonβ which persists acrossruflo route feedbackcalls (saveModel, ruflo 3.10.6+); never the brokenroute statsCLI. - β· proof (alarm-only) β the most recent
ruflo-improvement-evalverdict (.claude-flow/improvement.json), a synthetic proof-of-mechanism (its own reward env: permutationp+ Cohen'sd+ above-chance vs a no-learning ablation), not a live measure of real routing. APASS(expected) renders nothing; only a regression surfaces asβ· proof FAIL Ξpp Β· CI Β· p Β· d Β· <age>(the age keeps a stale FAIL honest). Never fabricated. - π‘οΈ aidefence on β proactive prompt-injection/PII defense is loaded (ruflo's native line already shows the
CVE n/mcount, so this signals the other half). ΞβWββ live micro-LoRA adaptation, showing the model actually adapting from your work.ΞβWβ0.0039is the Frobenius norm of the micro-LoRA weight deltaβscalingΒ·(AΒ·B)β_F(federated-LoRA's standard adaptation-magnitude monitor);+0.0021β²is the growth this session (the live signal);n70is the count of distinct patterns adapted. Why a kit-maintained adapter: ruflo's own micro-LoRA is per-process scratch β the code literally sayssource: 'sonaCoordinator (in-memory, resets per process)', so every hook reinitialises it (randomA,B=0), applies that call's signals, then discards the weights; onlypatterns.json/stats.jsonpersist. The kit therefore persists what ruflo throws away: a single cumulative micro-LoRA in.claude-flow/neural/lora-live.json, advanced inline by the statusline (mtime+TTL gated) by feeding each new pattern ruflo distils from your work through the genuine@ruvector/ruvllm 2.5.6gradient path (real since F4 fixed), weighted by ruflo's own per-pattern confidence (no fabricated reward). The init RNG is seeded and weights are restored each tick, so the value is deterministic (no random-init noise) and cumulative β it climbs as you work. Honest scope: a kit-persisted mirror of ruflo's discarded adapter, fed ruflo's real confidence-weighted patterns. Not shown: the LoRA amplification factor (needs a frozen baseW; the micro-LoRA is a standalone residual adapter with none) or a live reward curve (ruflo neural train's WASM path records trajectories, not signals β0). Refreshed automatically on render and byruflo-lora-track/ruflo-neural-train/ruflo-resync.- π Agentic QE β
V<version>is the installedagentic-qepackage version (read from itspackage.json, mirroringRuFlo V<x>in ruflo's header);π patterns/π§ traj/𧬠vec/πΎ sizefrom a few guardedsqlite3reads of.agentic-qe/memory.db(theveccount comes fromqe_pattern_embeddings, falling back tovectors/embeddingsacross aqe versions). The branch is already in ruflo's header line, so it's not repeated here.
Every npm install -g ruflo@latest (or agentic-qe@latest) re-resolves dependency pins, drops the native binaries again, and regenerates the status line β so self-learning goes dormant and the footer disappears. You don't have to remember everything an upgrade wipes:
npm install -g ruflo@latest # or agentic-qe@latest
ruflo-resync # β¨ one command heals it all
ruflo-resync --aqe # β¦and also refresh agentic-qe skills
β οΈ On npm β₯ 11.17,ruflo-resyncis now more necessary, not less. npm 11.17 introducedallow-scripts, which blocks packages' install/postinstall scripts by default β includingbetter-sqlite3'sprebuild-installandnode-gyp. So an upgrade (evennpm update -g) silently skips the native addon build, and ruflo falls back to buggy WASM (you'll seenpm warn allow-scripts β¦during the upgrade, andruflo-patch-native --checkwill report "needs patch" afterward).ruflo-resyncheals it β itsruflo-patch-nativestep installs the native binary even underallow-scripts(verified on npm 11.17). Always runruflo-resyncafter a global upgrade on npm β₯ 11.17.
After git pull on this kit itself: Run ./install.sh --minimal to copy the updated shell functions and CLAUDE.md template to ~/.config/ruflo/. It is idempotent and won't reinstall npm packages. This is the right step whenever you pull a new version of this repo β ruflo-resync only heals native binaries and self-learning; it does not redeploy the kit files.
As of ruflo v3.10.6 this is largely handled upstream (#2219):
ruflo now forces better-sqlite3 β₯12.8.0 (Node 20β26 prebuilts) via an npm overrides
entry, so the agentdb copies resolve to native v12 even on Node 24/26 β no more silent JS
fallback by default, and the override survives upgrades.
| Node | ABI | Stock backend (ruflo β₯3.10.6) | What to do |
|---|---|---|---|
| β€ 22 (LTS) | β€ 127 | β native | nothing |
| 24 | 137 | β native (v12 via override) | nothing β ruflo-resync re-asserts if ever needed |
| 26 | 147 | β native (v12 via override) | nothing β ruflo-resync re-asserts if ever needed |
ruflo-patch-native is now a safety net rather than a requirement. It still matters in
two cases: ruflo < 3.10.6 on Node β₯24 (no override yet β WASM fallback), and
agentic-qe (a separate package with its own native-SQLite init β ruflo-setup-aqe
repairs it). It keys off Node's ABI and no-ops where unneeded, so it's always safe to run.
Prefer to sidestep the whole topic? Run ruflo on Node 22 LTS.
The popular quickstart works for an afternoon in one repo:
ruflo init --full --start-all --force && claude mcp add ruflo -- ruflo mcp start && ruflo doctorβ¦but it bakes in choices that don't age well across many projects and modern Node:
| Concern | The one-liner | This kit |
|---|---|---|
| π Mindset | Per-project, repeated every repo | Configure the machine once, reuse everywhere |
π .mcp.json |
Written with cloud-SaaS servers β easy to commit by accident | Stripped; nothing project-scoped committed unless you mean it |
| π° Token cost | MCP always on β ~84k tokens/session | MCP optional; CLI-first reference keeps sessions lean |
| πΎ Memory on Node 24/26 | healthy on ruflo β₯3.10.6 (upstream override); the one-liner never verifies it landed | Native SQLite plus a real storeβdisk verification β and catches the <3.10.6 / agentic-qe gaps the override misses |
| π§ Self-learning | Looks "Not loaded"; no way to tell if it works | Activated and proven via a train/persist test |
| β©οΈ Reversibility | Manual cleanup | uninstall.sh reverses the setup with backups (--this-project also reverts a repo's statusline) |
It's not a replacement for ruflo β just a thin, reversible layer that picks safe defaults and closes the gaps.
ruflo-machine-ref/
βββ install.sh # machine bootstrap: prereqs + kit + heal (profiles, interactive)
βββ uninstall.sh # clean reversal (opt-in --purge for global npm packages)
βββ bin/
β βββ ruflo-patch-native # native better-sqlite3 (safety net; see Node policy)
β βββ ruflo-parity-test # 20-check end-to-end memory smoke test
β βββ ruflo-enable-learning # activate + assert ruvector self-learning
β βββ ruflo-learning-verify # prove the learning loop persists
β βββ ruflo-improvement-eval # causal self-improvement eval (route Q-learner)
β βββ ruflo-patch-route-learning # retired no-op on ruflo β₯3.10.6 (kept for older installs)
β βββ ruflo-security-verify # verify security scan/defend/secrets + aidefence
β # (ruflo-token-audit lives in the skill below; install.sh also puts it on PATH)
βββ shell/
β βββ ruflo-functions.sh # ruflo-resync, ruflo-onboard, ruflo-setup-project, ruflo-daemon-gc, β¦
β βββ ruflo-lib.sh # shared helpers (deployed to ~/.config/ruflo for the bin scripts)
βββ claude/
β βββ ruflo-preamble.md # always-on operating rules (top of the CLAUDE.md block)
β βββ ruflo-reference.md # compact CLI-first CLAUDE.md block (always on)
β βββ ruflo-reference-full.md # full reference, deployed on-demand (not auto-loaded)
β βββ aqe-reference.md # conditional block β present only when agentic-qe is installed
β βββ superpowers-reference.md # conditional block β house rules so superpowers + ruflo coexist
β βββ skills/
β βββ ruflo-token-audit/ # user-scope skill; bundles its own engine (scripts/) β works standalone
βββ docs/
βββ BACKGROUND.md # the full root-cause story (memory + learning + aqe + security)
βββ TROUBLESHOOTING.md # symptom β diagnosis β fix
βββ CONDITIONAL-BLOCKS.md # how the per-tool CLAUDE.md blocks work + how to add one
βββ usage/ # token-consumption findings & mitigation
βββ upstream/ # upstream bug findings filed against ruflo / ruvector
βββ superpowers/ # the design specs + implementation plans
./uninstall.sh # kit footprint only: bin scripts, template, CLAUDE.md block, rc line
./uninstall.sh --this-project # ALSO revert the kit's per-project patches (statusline + local MCP config) in the current repo
./uninstall.sh --remove-ruflo # ALSO npm-uninstall global ruflo (machine-wide; asks first)
./uninstall.sh --remove-aqe # ALSO npm-uninstall global agentic-qe (machine-wide; asks first)
./uninstall.sh --purge # --remove-ruflo + --remove-aqe
./uninstall.sh --dry-run # preview without changing anythingThe plain uninstall.sh removes only machine-level kit setup; your ruflo
install, memory DBs, and project files are left untouched. The
--remove-ruflo / --remove-aqe / --purge flags reach the global npm
packages β they affect every project on the machine, so each one prompts to
confirm (pass --yes to skip in scripts). Add --this-project from a repo root to revert that repo's per-project
patches (statusline and any local-scope MCP config β these are repo-level, not
machine-level). It backs up first and leaves all ruflo/agentic-qe data alone β
use ruflo cleanup --force for per-project data.
- π docs/BACKGROUND.md β the full root-cause investigation (Node/ABI/WASM, why self-learning looked dormant, the agentic-qe variant, the security surface)
- π§ docs/TROUBLESHOOTING.md β symptom β diagnosis β fix runbook
- π§© docs/CONDITIONAL-BLOCKS.md β how the per-tool CLAUDE.md blocks work (agentic-qe, superpowers), why superpowers needs "house rules," and how to add support for a new tool
- π§± docs/superpowers/ β the design spec and implementation plan behind the self-learning work
This kit stands on the shoulders of several projects and people:
- π§ ruflo (a.k.a. claude-flow) by ruvnet β the orchestration toolkit this kit configures: https://github.com/ruvnet/ruflo
- π agentic-qe by proffesor-for-testing β the standalone quality-engineering fleet: https://github.com/proffesor-for-testing/agentic-qe
- π Ciprian Melian's setup-and-repair gist β prior art that paired ruflo with agentic-qe and inspired this kit's direction: https://gist.github.com/ciprianmelian/eb7e8ff7d24018141ca34bb8a7e216a6
- π Upstream issue for the memory/Node bug family, ruvnet/ruflo#2219 β resolved in ruflo v3.10.6 (an npm override pins
better-sqlite3 β₯12.8.0across the agentdb copies); the kit's native patch is now a safety net rather than a requirement - ποΈ better-sqlite3 β the native SQLite binding at the heart of the fix: https://github.com/WiseLibs/better-sqlite3
- π€ Claude Code by Anthropic β the agent this all runs inside: https://claude.com/claude-code
Target: macOS / Linux Β· zsh or bash Β· ruflo 3.10.x Β· Node 20β26 Β· Python 3.10+. A thin, reversible layer β not a fork. PRs and issues welcome.