
Get Memo running from source in under a minute. This guide assumes a development setup — for end-user installation, see the Installation Guide.
| Requirement | Minimum Version | Check Command |
|---|---|---|
| Go | 1.26+ | go version |
| Flutter | 3.10+ | flutter --version |
| GCC / build-essential | Any recent | gcc --version |
| Git | Any recent | git --version |
SQLite and sqlite-vec require CGO. SetCGO_ENABLED=1before any Go command. On Linux, installbuild-essential(Debian/Ubuntu) orbase-devel(Arch). On macOS, install Xcode Command Line Tools. On Windows, use MSYS2 or MinGW.
git clone https://github.com/BugraAkdemir/memo.git
cd memo
Terminal 1 — Backend:
go run . --port 8090
The Go backend starts on localhost:8090. It serves the REST API, SSE streaming endpoints, and manages llama.cpp, memory, providers, and all backend services.
Terminal 2 — Frontend:
cd frontend
flutter run -d linux
Replace linux with windows, macos, or chrome depending on your platform. The Flutter desktop app connects to the backend over HTTP/SSE.
If port 8090 is in use, pass--port 8080(or any other port). Update the Flutter client'sMemoApiClientbase URL to match.
cd memo
CGO_ENABLED=1 go build -o memo .
cd memo/frontend
flutter build linux --release
The compiled binary is at frontend/build/linux/x64/release/bundle/.
The repository includes build_releases.sh which produces platform packages:
./build_releases.sh
This generates .AppImage, .deb, .tar.gz (Linux), .zip (macOS), and .exe (Windows) in dist/.
Listening on :8090memo/
├── main.go # Entry point
├── go.mod
├── internal/ # 29 Go packages
│ ├── app/ # Central orchestrator
│ ├── webserver/ # REST API + SSE
│ ├── memory/ # RAG vector store
│ ├── provider/ # LLM provider routing
│ ├── agent/ # Tool-calling sandbox
│ ├── orchestra/ # Multi-model workflows
│ ├── cloudsync/ # Google Drive E2E backup
│ ├── whatsapp/ # WhatsApp bridge
│ ├── calendar/ # Event store + reminders
│ ├── identity/ # System prompt / persona
│ └── ...
├── frontend/ # Flutter desktop + mobile
│ ├── lib/main.dart
│ ├── lib/providers/ # Riverpod state
│ ├── lib/widgets/ # UI components
│ └── lib/core/ # API client, themes
├── config/config.yaml # Default configuration
├── data/ # SQLite databases, sessions, models
└── build_releases.sh # Packaging script