Bringing her home
Start to finish, this takes about ten minutes, most of which is deciding which model you want her to think with.
Before you start
Section titled “Before you start”You need a machine you control — a laptop is fine — and an account with a model provider (Anthropic, OpenAI, OpenRouter, or anything OpenAI-compatible, including a local Ollama). Waffle has no model of her own; she borrows one.
1. Install
Section titled “1. Install”If you already have the Go toolchain:
go install github.com/matt-riley/waffle/cmd/waffle@latestThat writes the binary to $(go env GOPATH)/bin/waffle. Put that directory on
your PATH.
From a clone instead, which pins the exact toolchain:
git clone https://github.com/matt-riley/waffle.gitcd wafflemise installmise run build # produces bin/waffle2. Run setup
Section titled “2. Run setup”waffle setupThis is the only command with real decisions in it. It walks through:
- Creating her encrypted store — where credentials live. Nothing readable sits on disk in plain text.
- Connecting a model provider — you paste a key once; it goes straight into the encrypted store.
- Choosing a model — you register short local names for the models you want, and pick a default.
- Writing a starter profile — the settings your interactive chat uses.
- Offering to enable Waffle Desk — the browser view. Optional, off unless you say yes, and it prints the address if you do.
Re-running waffle setup is safe. Steps that are already done say so and are
skipped.
3. Say hello
Section titled “3. Say hello”waffle chatThat opens the conversation. Type; press Enter to send. Alt+Enter gives you
a new line without sending. Typing / opens the command list. /exit closes
cleanly.
If chat tells you no providers are configured, step 2 did not finish — run
waffle setup again and watch for the provider step.
Installed, or Ready?
Section titled “Installed, or Ready?”Waffle distinguishes two states, and the difference explains most first-run confusion:
- Installed — the binary, state directory, and commands exist. She is there, but has no validated model to think with.
- Ready — Installed, plus a working model, checked and selected.
Finishing setup without completing the provider step leaves you Installed. She
will start and refuse to answer, which looks like a bug and is not one.
waffle doctor says which state you are in.
Adding Telegram (optional)
Section titled “Adding Telegram (optional)”If you want to message her from your phone, create a bot with Telegram’s BotFather, put the token in her config, then:
waffle serve # in one terminal; this owns background workMessage your bot. It replies with a pairing code. Approve it on the machine:
waffle pair approve <code>That binds your account. Anyone else who messages gets a code and nothing else, forever, unless you approve them too.
Where everything lives
Section titled “Where everything lives”One directory: ~/.waffle. Her database, notes, configuration, and encrypted
secrets. Back that up and you have backed her up:
waffle backup /absolute/path/to/backup-dirThe encryption identity is deliberately not included by default — back that
up separately with waffle secret export-identity, or the backup cannot be
decrypted.
Talking to her covers the three ways in and when each is worth using. Before you give her much to do, read Keeping her safe.
Nerd corner: How it fits together — what setup actually writes, and where.