A local-first note organizer. Dump raw notes, transcripts, or thoughts — Ollama structures them into a title, summary, and tags, and links them to related notes. Everything runs on your machine by default: Bun + Express backend, SQLite storage, Ollama for the AI, and a plain HTML/CSS/JS frontend. Ollama Cloud is also supported when configured with an API key.
bun install
bun run startThen open http://localhost:8000
For auto-restart on file changes during development:
bun run devTo check or apply formatting:
bun run format:check
bun run formatWinston writes timestamped level, message, and optional metadata to the
console and to logs/info.log, logs/warn.log, and logs/error.log. Log files
are generated at runtime and ignored by Git.
public/ Browser UI: HTML, CSS, and client-side JavaScript
src/config/ Environment configuration
src/database/ SQLite connection and schema initialization
src/repositories/ Database query modules
src/routes/ HTTP route registration
src/controllers/ Request and response handling
src/services/ Business workflows and Ollama integration
src/middleware/ Express middleware and error handling
src/utils/ Shared utility functions
recall.sqlite Local note database (created automatically)
Copy .env.example to .env to configure the server locally. .env is ignored
by Git so local settings stay on your machine.
Environment variables:
PORT— server port (default 8000)OLLAMA_MODE—localorcloud(defaultlocal)OLLAMA_URL— Ollama API base URL (default http://localhost:11434)OLLAMA_CLOUD_URL— direct cloud API URL (default https://ollama.com)OLLAMA_API_KEY— required whenOLLAMA_MODE=cloudOLLAMA_MODEL— model name to use (defaultllama3.1locally orgpt-oss:120bin cloud mode)
Example:
OLLAMA_MODEL=qwen2.5 bun run startFor direct Ollama Cloud access:
OLLAMA_MODE=cloud OLLAMA_API_KEY=your_api_key bun run start- You paste raw text into the sidebar and hit "Save & Organize."
- The backend sends it to Ollama asking for
{ title, summary, tags }as JSON. - The backend asks Ollama (with a tag-overlap fallback) which existing notes are related to the new one.
- Everything is saved to a local
recall.sqlitefile viabun:sqlite. - The frontend shows a note list on the left, full detail (summary, tags, original text, related notes) on the right.
- Swap the related-notes heuristic for real embeddings (
ollama pull nomic-embed-text) and cosine similarity instead of asking the LLM to eyeball relatedness. - Add note editing (currently create + delete only).
- Stream the Ollama response so the UI shows tokens as they arrive.
- Add a "daily digest" that asks Ollama to summarize the week's notes.
