Skip to content

BugraAkdemir/memo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

403 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Memo Logo

Memo

The local AI that remembers everything β€” and acts before you ask.

100% Local Β· Privacy-First Β· Zero Cloud Dependency Β· Fully Offline


Download Stars License Version



Go Flutter llama.cpp RAG WhatsApp Platform CI

πŸ‡ΉπŸ‡· TΓΌrkΓ§e iΓ§in tΔ±kla


Every other AI forgets you the moment you close the tab.
Memo doesn't.

It runs entirely on your machine. It remembers conversations from weeks ago. It learns when you work and quietly gets ready before you do. And when you ask it to actually do something β€” edit a file, run a command, message someone on WhatsApp β€” it does it.

No cloud. No subscription. No telemetry. Your mind stays yours.


🎬 Watch the Agent actually do the work

Reading files, running shell commands, writing code β€” live, sandboxed, permission-gated.
β–Ά Tap to play if the preview doesn't load


Memo vs. Every Other Assistant

πŸ€– Typical AI Assistant 🧠 Memo
Memory Forgets when the tab closes Remembers for weeks (local RAG)
Your data Sent to the cloud Never leaves your machine
Works offline ❌ βœ…
Takes real actions Generates text only Edits files, runs commands, messages
Learns your habits ❌ βœ… Proactive engine
Cost Monthly subscription Free & open source

The Three Things That Make Memo, Memo

🧠 It Remembers

Every chat is embedded into a local vector database. Mention a project from three weeks ago and Memo already has the context.

How β†’

πŸ“Š It Learns

A background observer learns your rhythms. After a week it knows when you code, plan, or take breaks β€” and anticipates.

How β†’

⚑ It Acts

8 real tools in a secure sandbox: read/write files, run commands, search the web, message WhatsApp. You approve each step.

How β†’

✨ Features

πŸ’¬ A Chat That Feels Alive

Streaming token-by-token responses with full Markdown β€” syntax-highlighted code blocks, tables, images. Drop in a file (text, PDF, code) or an image and Memo reads it. Hit / for the slash-command palette, or press-and-hold the mic for on-device voice input via whisper.cpp.

Switch language mid-sentence and it follows you. Toggle web search and every reply is enriched with live results β€” no API key, no setup.

Chat Screen

🧠 Immortal RAG Memory

Every exchange is embedded into a 768-dimension vector and stored in SQLite with sqlite-vec ANN indexing. Ask something new and Memo pulls the most relevant past conversations and injects them into the prompt β€” so the model already knows.

No Pinecone. No embeddings API. No cloud vector DB. Just SQLite and your GPU. This is the difference between an assistant that knows you and one that meets you for the first time, every single time.

Memory Settings

🎬 Watch Memo recall who you are β€” across sessions:


πŸ€– The Agent Engine

Point Memo at a project folder and it stops talking and starts doing β€” reading, writing, editing, deleting files; listing directories; running shell commands; searching the web. 8 built-in tools inside a sandbox with path validation, symlink protection, and a command blacklist.

Every tool call asks first. Allow or deny once, for the session, or forever. Up to 20 iterations per task, a 60s timeout per tool, cancel anytime. It feels like Claude Code or Cursor β€” minimal, informative, never noisy.

Agent Screen

πŸ“± Deep WhatsApp Integration

Connect with a QR code β€” same protocol as WhatsApp Web, no Business API fees. Read, search, and reply to messages right inside Memo, in a UI that matches its bronze theme.

The agent can send messages and resolve contacts by name β€” just say "message Berra", no JID needed. And every WhatsApp conversation feeds the same memory, observer, and calendar pipelines as normal chat.

WhatsApp QR

πŸ“… Smart Calendar β€” It Schedules Itself

You never fill out a form. A two-stage pipeline scans every message for time patterns ("tomorrow", "next Tuesday", "at 3pm"), and only matching messages reach an LLM that extracts a structured event.

Reminders fire on desktop and mobile. Said something vague like "maybe tomorrow?" β€” Memo creates an ambiguity event you confirm with one tap. Atomic SQL transactions guarantee a reminder never fires twice.

Calendar

🎬 A plan mentioned in chat becomes a calendar event β€” automatically:


πŸ‘οΈ Proactive Learning Engine

Memo is the only assistant that comes to you. A background observer tracks when you're active β€” never what you say. Using circular (directional) statistics, it finds rhythms like "Mondays 9–10am, planning" or "Daily 9pm–11pm, coding."

When confidence crosses a threshold, it decides: suggest something helpful, push a notification, or β€” at high confidence β€” auto-start the agent. It's opt-in, transparent, and patterns that fade are forgotten. It stores only topic labels and timestamps β€” never your raw text.

🎬 The Mood Engine & opt-in Self-Interest protocol in action:


πŸͺ Curated Model Store

Finding the right model is usually a maze of HuggingFace repos and cryptic filenames. Memo fixes that. It detects your GPU and RAM, then tags every download with a hardware-fit badge: "Fits your device β€” fast on GPU", "Runs (CPU)", or "Too large."

Plain-language quality labels replace quant codes β€” "Balanced quality" instead of Q4_K_M. Real company logos, capability filters (Tools / Vision / Code), and a one-click Start that auto-configures GPU offloading. No more guessing.

Model Store

My Models

🎡 Orchestra β€” A Team of Models

A Chief model decomposes a complex task and delegates to 8 specialist roles, then synthesizes the result. Mix providers freely β€” Claude for reasoning, Gemini for speed, local llama.cpp for code. Independent roles run in parallel. Combine it with the Agent and the Chief plans while the Agent executes, step by step.

Planner Frontend Backend Bug Fixer Reviewer Security DevOps Generalist

πŸ”Œ 8 Providers Β· 🎀 Voice Β· ☁️ Cloud Sync Β· πŸ”’ Privacy

  • 8 Providers, One Interface β€” OpenAI, Claude, Gemini, Grok, Groq, OpenRouter, Ollama, and bundled llama.cpp. Auto-fallback on failure, auto-disable after 3 errors, live /model switching mid-chat. Keys encrypted with AES-256-GCM.
  • 🎀 Voice Input β€” on-device whisper.cpp. Press, speak, release. Auto-detects TR/EN. Audio never leaves your machine.
  • ☁️ Cloud Sync β€” optional E2E-encrypted Google Drive backup. AES-256-GCM + PBKDF2 (600K iterations). Encrypted before upload β€” Google can't read it.
  • πŸ”’ Privacy by Design β€” no telemetry, no analytics, no crash reporting. Config files at 0600. Incognito mode leaves zero trace. The observer stores activity timestamps, never message content.

πŸš€ Quick Start β€” Zero Config

No terminal. No build steps. llama.cpp is bundled. Download β†’ extract β†’ pick a model in the Store β†’ chat.

Platform Package Instructions
Linux Memo-linux-x64.zip unzip Memo-linux-x64.zip -d Memo && cd Memo && ./run_memo.sh
Windows Memo-windows-x64.zip Extract β†’ run run_memo.bat
macOS Memo-macos.zip unzip Memo-macos.zip -d Memo && cd Memo && open run_memo.command

⚠️ Engine binaries (llama-server, vec0) are not included β€” add them manually.
πŸ“¦ Download engine binaries β€” extract into binaries/<platform>/ inside the Memo folder.

CI builds on every push:
Build Linux Build Windows Build macOS

β†’ Actions tab β†’ pick a workflow β†’ download Artifact.


Download
πŸ›  For developers β€” build from source

Prerequisites: Go 1.26+ Β· Flutter 3.10+ Β· SQLite dev libraries (for CGO)

git clone https://github.com/BugraAkdemir/memo.git
cd memo

# Terminal 1 β€” backend
CGO_ENABLED=1 go run . --port 8090

# Terminal 2 β€” frontend
cd frontend && flutter run -d linux

Release packages:

./build_releases.sh     # Linux  β†’ AppImage / deb / tar.gz
.\build_releases.bat    # Windows β†’ Inno Setup installer / zip

πŸ— Architecture & Tech Stack

Two decoupled processes talk over plain HTTP/SSE on localhost:8090. No TLS (local only), no external router β€” pure net/http ServeMux. The frontend is a single-page Flutter app with Riverpod, Dio SSE streaming, and flutter_markdown.

πŸ“ See the full architecture diagram
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Flutter Desktop (Linux/Windows) β”‚    β”‚  Flutter Mobile           β”‚
β”‚  Chat Β· Agent Β· Orchestra        β”‚    β”‚  Chat Β· Notifications     β”‚
β”‚  Settings Β· Model Store          β”‚    β”‚  Remote connect           β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
               β”‚  REST + SSE (:8090)                 β”‚  LAN / ngrok
               β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚               Go Backend β€” 25 packages, ~90 endpoints            β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚ Memory  β”‚ β”‚Sess. β”‚ β”‚Llama β”‚ β”‚WhatsAppβ”‚ β”‚Agent β”‚ β”‚Providerβ”‚  β”‚
β”‚  β”‚ vec0    β”‚ β”‚JSON  β”‚ β”‚GPU   β”‚ β”‚whatsmeowβ”‚ β”‚Pipe  β”‚ β”‚Router  β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚  Orchestra Β· ModelStore Β· CloudSync Β· Calendar Β· Mood            β”‚
β”‚  ngrok Β· Tailscale Β· Whisper Β· Skills Β· Intent Β· Observer        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
Backend Go 1.26 Frontend Flutter 3.10 Vector DB SQLite + vec0 Inference llama.cpp
State Riverpod 2.4 HTTP Dio 5.4 / SSE Voice whisper.cpp WhatsApp whatsmeow
Cloud Drive + AES-256 GPU nvidia/rocm/sysfs License AGPL v3 CI GitHub Actions

πŸ“š Deep dive: Architecture Β· API Reference Β· Design System Β· Roadmap Β· Changelog


🀝 Contributing

Memo is AGPL-3.0 and contributions are welcome.



Your mind. Your data. Your machine.

Built with obsession by Buğra Akdemir


Download Β  Star

Bug Report Β· Discussion Β· TΓΌrkΓ§e

About

Privacy-first local LLM chat app with RAG memory, AI agents, multi-model orchestration, WhatsApp integration & E2E-encrypted cloud sync. Runs llama.cpp models locally offline, with optional OpenAI/Gemini/Claude fallback. Desktop app built with Go + Flutter. Open source, no tracking, no ads.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors