MemoDocumentation
EN

Quick Start Guide

Get Memo running from source in under a minute. This guide assumes a development setup — for end-user installation, see the Installation Guide.

Prerequisites

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. Set CGO_ENABLED=1 before any Go command. On Linux, install build-essential (Debian/Ubuntu) or base-devel (Arch). On macOS, install Xcode Command Line Tools. On Windows, use MSYS2 or MinGW.

Clone and Run

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

Two-Terminal Setup

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's MemoApiClient base URL to match.

Build (Release)

Backend

cd memo
CGO_ENABLED=1 go build -o memo .

Frontend

cd memo/frontend
flutter build linux --release

The compiled binary is at frontend/build/linux/x64/release/bundle/.

Packaging Script

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/.

Verify Everything Works

  1. Backend should print Listening on :8090
  2. Frontend should show the Memo welcome screen
  3. Open a chat and send a message — if no model is configured, visit the Model Store first

Directory Layout After First Run

memo/
├── 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

Next Steps