myflo

local-first workbench · for claude code

Capture, recall,
organize.

Everything lives on disk under ~/.flo/. Notes, tasks, transcripts, inbox handlers, memory with FTS5/BM25 search, macOS launchd installers, 22 MCP tools exposed to Claude Code agents. No cloud. No API keys.

$npx @fuzeelogik/myflo setup view on github →

macOS · Linux · Node ≥ 20 · MIT

what you get

Twelve concrete tools, one consistent shape.

capture

flo notes · flo memory · flo tasks

Quick capture that survives Claude Code sessions. Append-only JSONL with tombstones. BM25 search out of the box; AgentDB + FTS5 if you opt in.

flo notes "JWT refresh tokens with 1hr expiry #auth"
flo memory search "jwt"
flo tasks create "Wire up the auth flow"
audio

flo transcribe · inbox handler

Drop an .m4a into a watched folder, get a sidecar .txt transcript next to it. Auto-detects whisper / mlx-whisper / whisper-cpp. No cloud.

flo inbox add ~/voice-memos --slug memos
flo inbox install memos          # macOS launchd, runs every 30s
# drop voice.m4a → voice.m4a.txt appears
recall

flo guidance audit · activity

Find duplicates across ~/.claude/{skills,commands,agents}/. See a chronological timeline of everything you did across every subsystem.

flo guidance audit --out ~/Desktop/audit.md
flo activity list --since 7d --type task
coordinate

flo agents · flo swarm · flo session

Named-agent registry for multi-agent flows. Weighted voting on proposals. Ghostty/iTerm window restore after reboot (the a-team pattern).

flo session terminal-add work --cwd ~/projects/api --app ghostty
flo session terminal-restore --all
flo swarm vote use-jwt --voter alice --vote yes
flo swarm tally use-jwt
mcp

22 tools for Claude Code agents

Once registered, every agent in your Claude Code session can call flo_memory_search, flo_tasks_create, flo_agent_spawn, flo_transcribe, and 18 more.

flo migrate    # adds flo to ~/.claude/mcp.json
# restart Claude Code → tools appear
dashboard

localhost web UI

Nine panels: overview, activity timeline, swarm, memory, tasks, sessions, capabilities, inbox, transcripts. Server-side rendered. Subprocesses the flo CLI for every data fetch.

cd web && pnpm dev --port 3030
open http://localhost:3030

how to use it

Three daily-driver patterns.

daily capture

Quick thoughts go to flo notes with #hashtags. Tasks that should survive the session go to flo tasks. Both feed the same activity timeline.

flo notes "Hash routing fails on trailing slash #bug"
flo tasks create "Add e2e test for trailing-slash redirect" --tags bug,routing
# tomorrow:
flo memory search "trailing slash" --namespace notes
flo tasks list --status pending --tag bug
voice → memory

Record a voice memo on your phone, drop the file in a watched folder. Transcript ends up next to the audio and indexed in flo memory under the meetings namespace.

flo inbox add ~/voice-memos --slug memos
flo inbox install memos                  # macOS: runs every 30s
# … drop voice-2024-08-14.m4a in ~/voice-memos
# … 30s later: voice-2024-08-14.m4a.txt exists
flo memory search "client decision" --namespace meetings
weekly review

Friday afternoon: what did I actually do this week? flo activity aggregates tasks, notes, memory, transcripts, terminal sessions, and Claude Code checkpoints into one timeline.

flo activity list --since 7d
# or open the web UI:
cd web && pnpm dev --port 3030  # then visit /activity

install

Two commands.

1 · install
# global install (recommended)
npm install -g @fuzeelogik/myflo

# or one-shot via npx
npx @fuzeelogik/myflo setup
2 · setup
flo setup
# creates ~/.flo/{memory,messages,logs}/
# initializes ~/.flo/{inboxes,terminals}.json
# registers flo as an MCP server in ~/.claude/mcp.json
# runs flo doctor
3 · go
flo --help                          # 27 commands
flo notes "First note #flo"
flo tasks create "Try the web UI"
# (restart Claude Code to pick up the new MCP tools)

Requires Node ≥ 20. macOS for the launchd installer; everything else cross-platform. The audio transcriber uses whatever's on your PATH (mlx-whisper, openai-whisper, or whisper.cpp).

migrating from ruflo

Two commands, both backed up first.

myflo started as a fork of ruflo for the runtime substrate. The flo CLI on top is ours: focused on capture / recall / coordination, not enterprise multi-agent orchestration. If you're running ruflo today, the cutover is additive then subtractive:

flo migrate          # adds 'flo' to ~/.claude/mcp.json (idempotent, doesn't touch ruflo)
flo replace ruflo    # removes ruflo entries from settings.json + ~/.claude/mcp.json
                     # backs up to .flo-bak.<timestamp> first
# restart Claude Code → only flo's MCP tools are loaded

Rollback: cp .claude/settings.json.flo-bak.* .claude/settings.json

honest scope

What myflo is not.