Skip to content

Latest commit

 

History

709 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FlowFlow

FlowFlow

Voice notes that think with you - iPhone and Mac, mainly Rust, built with Dioxus.
Featured on Awesome Dioxus.


Most of my ideas come when I'm walking or between two tasks. And they vanish just as fast.

FlowFlow is a voice notes app that captures what you say, transcribes it, and lets you chat with your notes later. You ask "what was that pricing idea?" and the right passages come up - with links to the original notes.

No manual searching. No folders to dig through. Just talk, and find it later.

Get it

  • iOS - on the App Store, available worldwide.
  • macOS (Apple Silicon) - grab the DMG from the latest release, drag FlowFlow to Applications. Signed and notarized by Apple: it opens like any Mac app.
  • From source - see Build below; one make installs on your own iPhone or Mac.

Highlights

Capture

  • One composer for notes and chat: type, or tap the mic and a dark voice capsule records, transcribes and hands the text back where you were typing
  • Live 60fps waveform, pause/resume, Dynamic Island live timer; the capsule stays on screen until the text is ready, with retry if a transcription fails
  • Cloud (Soniox) or fully offline transcription with local Whisper models
  • Personal dictionary: your names and brands spelled right, everywhere

Ask your notes

  • RAG chat with tappable sources: hybrid search (BM25 + vector + rerank)
  • Chat through an OpenAI API key or a ChatGPT subscription; embeddings still use the OpenAI API
  • Optional web search (Exa) fused into the same answer
  • Save any answer or thread back as a note

Organized for you

  • AI titles, tags and themes as you write; searchable chats
  • Theme search from the menu or the title; every folder starts open and the ones you close stay closed
  • Threads: related notes as one chronological story; right-click or long-press a note within a thread to copy its full text or share that note
  • Smart filters in the search bar: dictated, reminder, document, thread

Your devices, one brain

  • Encrypted LAN P2P sync (Noise protocol): no server, no cloud
  • One account for up to 3 paired devices; premium follows the pairing automatically
  • One-archive backup, validated crash-safe atomic restore

Act, not just record

  • "Pick up the kids at 5pm" becomes a calendar event, one tap to confirm
  • Notes as actions: the assistant executes with your connected tools, every write holds for approval
  • One + menu in notes and chat: tools, agents and connectors, with live connection state and each product's own icon
  • Scoped agents: installed packages are verified and pinned, each capability checked against its owner, every native action confirmed before it runs
  • Governed connectors (Google Sheets), each through its own MCP peer; groundwork for a signed-agent marketplace

Share a space with Hermes Agent

  • Grant a Hermes Agent scoped, revocable access to one shared space from the space menu
  • Hermes reads folders, notes and threads, writes its own notes and threads, and every change lands on your devices through the normal space pull
  • Everything is a plain note on arrival: searchable and chat-ready

Native feel

  • A real Mac app: ⌘N, ⌘F, ⌘⌘, view history, native file dialogs
  • iPhone: the menu lies under the screen, which slides aside as a card; swipe from anywhere to open it
  • iOS 26 Liquid Glass controls and native options menus (press, slide, release); haptics on every commit, drag-to-dismiss sheets
  • English + French, down to error messages; word-level transcript with tap-to-seek

The full tour, one paragraph per feature: docs/FEATURES.md.

How it works

Talk   → Record → Transcribe (cloud or on-device) → Clean fillers → Apply dictionary → Auto-embed → Store → AI title

Ask    → Embed query → Hybrid search (BM25 + vector)  ∥  Web search (Exa, when enabled)
       → RRF fusion → LLM rerank → Temporal boost → Tag-enriched context → Agent with tools → Answer with sources

Sync   → Save → debounced trigger → Noise-encrypted LAN session → version-vector merge → UI refresh < 1 s

Hermes → mcps_ token (one space, read or read_write) → MCP tools on api.flowflow.be/v1/mcp-spaces
         → notes and threads written by the agent → pulled by every member device

Backup → Export scrubbed SQLite snapshot + WAV + manifest (zip) → share
         Import → read-only validation → atomic swap at next launch → vector index rebuilt offline

Hermes Agent

FlowFlow ships a Hermes skill in skills/flowflow-spaces. Install it on the Hermes host, store the one-time token in ~/.hermes/.env, and add one MCP server per shared space:

./scripts/install-flowflow-hermes-skill.sh
mcp_servers:
  flowflow_projects:
    url: "https://api.flowflow.be/v1/mcp-spaces"
    headers:
      Authorization: "Bearer ${FLOWFLOW_TOKEN_PROJECTS}"

The MCP server reports a contract_version; the skill states the version it was written for and asks for an update when they diverge. Update with git pull && ./scripts/install-flowflow-hermes-skill.sh, or track the skill with hermes skills install <raw SKILL.md url> and hermes skills update. Full walkthrough, safety rules, rotation and revocation: docs/guides/hermes-flowflow.md.

Built with

Mainly Rust: the app itself is Rust end to end, UI included, with a few deliberate exceptions where another tool does the job better - a small TypeScript layer for webview gestures, two Swift packages for the Live Activity, and the web sites in Astro.

Part Stack
App (src/) Rust: Dioxus 0.7, rig, LanceDB, rusqlite, snow (Noise XXpsk3), cpal, whisper-rs, tokio, Tailwind CSS v4
Webview gestures ~13 KB of TypeScript (src/ui/hooks/*.ts), compiled by make js
Live Activity Swift (src/ios/widget, src/ios/plugin), bridged via FFI
Account site (account/) Astro - passkeys, plan and devices at account.flowflow.be
Landing (landing-page/) Astro - flowflow.be
Backend Rust (separate repo) - accounts, entitlements, governed connector proxy
AI services OpenAI (embeddings + API-key chat), ChatGPT subscription (chat), Anthropic (chat), Soniox (cloud STT), Exa (web search)
Targets iOS 16+ (aarch64-apple-ios), macOS (Apple Silicon)

Build

rustup target add aarch64-apple-ios aarch64-apple-ios-sim
cargo install dioxus-cli
cp .env.example .env   # add your API keys (or set them in-app)

API keys can be set in-app via Settings and are stored in SQLite. ChatGPT subscription tokens are stored in Apple Keychain. Chat can use either an OpenAI API key or a ChatGPT subscription. An OpenAI API key remains required for semantic search and embeddings. Transcription works with a Soniox key or a downloaded local Whisper model.

make all          # build + sign + icon + install on iPhone
make ddev         # dx serve --ios --device (hot reload)
make desktop-app  # build + install the Mac app in /Applications
make dmg          # distributable Mac DMG in dist/
make release      # make dmg + notarize + publish as a GitHub release
make check        # fmt check + clippy
make appstore     # release build + signed IPA

Full command list in the Makefile.

Documentation

Where What
docs/INDEX.md Product, architecture, dev guides, App Store
docs/FEATURES.md The full feature tour
docs/HISTORY.md Every milestone, chronologically
Hermes Agent guide Connect one FlowFlow space to Hermes through MCP

Tests

cargo test
cargo test -- --ignored    # API-key-gated integration tests

Status

Actively developed. The codebase evolves constantly - new features, better architecture, and deeper platform integration land regularly.

Contributing

See CONTRIBUTING.md.

License

Copyright 2026 Mirko Bozzetto - EUPL v1.2

Releases

Packages

Used by

Contributors

Languages