# Run it locally: Your books, on your computer.

> Run Oatmilk on your own computer with the CLI and the web portal, or choose where each part runs: this computer, the cloud, or off.

[Get started](https://app.getoatmilk.com/sign-up) · [Sign in](https://app.getoatmilk.com/sign-in) · [Docs](https://getoatmilk.com/docs.md) · [llms.txt](https://getoatmilk.com/llms.txt)

## How it works

1. Paste the install line
2. Choose where each part runs
3. Open oatmilk.localhost

## What it does

- **Books, files and sign-in on your computer.** PostgreSQL, Redis, file storage and an account kept on this computer: nothing to sign up for.
- **AI on Ollama or LM Studio.** Ask AI, the classifiers and document reading can run on models on this computer.
- **Choose where each part runs.** Eight parts, each on this computer, in the cloud or off, with a gauge of how local you are.
- **Works offline.** Reading, categorizing, Ask AI, jobs, the team and the CLI keep working with no internet.
- **The CLI and the web portal.** The terminal app and the web portal at oatmilk.localhost both work on the same local books.
- **Your laptop or your own server.** It runs in Docker on this computer, or on a server for your team with HTTPS.

## Install

```sh
curl -fsSL https://getoatmilk.com/install.sh | sh
oatmilk setup --local
```

`oatmilk setup` with no flags asks its questions in the terminal, with a live gauge. `oatmilk setup --local` sets up without questions: everything on this computer, with email and web research off. It checks Docker and Bun, finds or downloads Oatmilk, prepares the models, writes the settings, starts Oatmilk, makes your account, signs the terminal in and opens your company, so you never sign in on this computer.

Full guide: https://getoatmilk.com/docs/self-hosting

## Choose where each part runs

Setup places eight parts. Each has a share of the gauge (they add up to 100), and setup says how local it is in words, like `80% local · Mostly on this computer`. A part that is off sends nothing anywhere, so it counts as local.

| Part | Share | This computer | Cloud | Off |
| --- | --- | --- | --- | --- |
| Sign-in | 15 | An account kept on this computer: no sign-up, no sign-in | Clerk, a hosted sign-in service | — |
| Books (database) | 25 | PostgreSQL and Redis on this computer | A cloud PostgreSQL you own: Supabase, Neon, RDS… | — |
| Files | 15 | Kept on this computer | An S3-compatible bucket: S3, R2, B2, MinIO… | — |
| Ask AI and agents | 15 | Ollama or LM Studio on this computer | Vercel AI Gateway | No Ask AI |
| Classifiers | 10 | A small model on this computer | TypeSafe's Jev in the cloud | You sort everything yourself |
| Reading documents | 10 | A vision model on this computer | Vercel AI Gateway | Documents are stored, not read |
| Email | 5 | — | Resend | Share links yourself |
| Web research | 5 | — | Tavily | Off |

Presets: **All local** (100% local), **Local AI, cloud database** (your own cloud sign-in, database and files, with every model on this computer) and **All cloud**. More combinations are on the way.

Without questions, start from all local and name the exceptions:

```sh
oatmilk setup --local                                   # 100% local
oatmilk setup --local --cloud-for agents                # Ask AI on a hosted model, the rest here
oatmilk setup --local --cloud-for account,database,files # local AI, your cloud database
oatmilk setup --local --off-for agents                  # no Ask AI
```

## What runs on your computer

Oatmilk runs in Docker: the app and its agents, PostgreSQL, Supabase Storage for files, Redis, sign-in and Caddy for HTTPS. The web portal opens at https://oatmilk.localhost on your computer, or at your own domain with HTTPS on a server for your team.

- About 4 GB of memory and 15 GB of disk.
- Docker Desktop or Docker Engine with Compose 2.20 or newer, and Bun.
- The first build takes about 10 minutes.

Day to day: `oatmilk local start`, `oatmilk local stop`, `oatmilk local open` (opens the web portal) and `oatmilk status` (where each part runs, with the gauge).

## Works offline

With every part on this computer, Oatmilk keeps working with no internet:

- Reading and categorizing statements, receipts and documents, on your local models.
- Ask AI.
- The five-minute jobs.
- Team members, roles, invitations (share the link yourself) and outside accountants.
- The REST API, MCP for AI apps on the same machine or network, and the `oatmilk` CLI.

Needs the internet, and stays off until you turn it on: Wise, Stripe, data connectors, sending email, cloud models and web research.

## The CLI and the web portal

Both work on the same local books. The CLI (`oatmilk`) opens your company in the terminal with Ask AI built in, and `oatmilk local open` opens the web portal in your browser. Answer something in one and the other sees it. AI apps connect over MCP at `https://oatmilk.localhost/api/mcp`, or with `oatmilk mcp` for apps that can only start a command.

## Models

Ask AI, the classifiers and document reading can each run on Ollama, LM Studio or any OpenAI-compatible server on this computer. Setup finds the server, picks models that fit your memory and downloads missing ones into Ollama. See https://getoatmilk.com/local-models.

## More from Oatmilk

- [Classifier](https://getoatmilk.com/classifier.md): Each bank and card line runs through rules, memory, receipts and Jev. Oatmilk sorts it only when it's sure, and asks you one question when it isn't.
- [Evidence matching](https://getoatmilk.com/evidence.md): Oatmilk reads receipts from your company's inboxes and matches each one to its charge. It asks you when it isn't sure and keeps the original.
- [Bookkeeping](https://getoatmilk.com/bookkeeping.md): Bank, card, Wise and Stripe charges come in and get sorted. Oatmilk asks you only when it isn't sure.
- [Compliance](https://getoatmilk.com/stay-compliant.md): Ask any rules question and get an answer with official sources. Guides, deadlines and rule changes for your company, in one place.
- [Invoices](https://getoatmilk.com/invoices.md): Make an invoice in a minute, send it, and see when it's opened and paid.
- [Agreements](https://getoatmilk.com/agreements.md): Write an agreement, send it to sign on any device, and keep every signed copy with a full record.
- [Contractors](https://getoatmilk.com/contractors.md): Contractors send hours from their own portal. You approve with a tap, pay with Wise and get tax slips at year-end.
- [Tax](https://getoatmilk.com/tax.md): Year-end for Canadian companies, one plain question at a time. T2, GST/HST and T4A work, ready for your accountant.
- [Ask AI](https://getoatmilk.com/ask-ai.md): Ask a question about your company and get a straight answer. Ask AI reads your books and asks before it changes anything.
- [Accountants](https://getoatmilk.com/accountants.md): Invite your accountant to see the books and help with year-end. You pick what they can do and when it ends, and every action is on the record.
- [Local models](https://getoatmilk.com/local-models.md): Run Ask AI, the classifiers and document reading on Ollama, LM Studio or any OpenAI-compatible server. Mix local and cloud by role.
- [CLI](https://getoatmilk.com/cli.md): Oatmilk in your terminal: every page one keypress away, Ask AI built in, and themes that work in light and dark terminals.
- [AI connectors](https://getoatmilk.com/mcp.md): Connect Claude, ChatGPT, Cursor, Codex and more to Oatmilk. Your AI can do what you can do, and nothing more.

Human version: https://getoatmilk.com/local
