Repository navigation
Lite
brainless grew up on three machines. A phone that captures, a MacBook where I write, and a laptop running Arch Linux that never sleeps and works the night shift. Thirty-four timers, a chat relay, six persona agents, and a private network holding it all together. It works for me. I would not ask anyone to copy it.
So there is a lighter way to run it. Same brainless, one computer. A folder of notes, whichever model you already use, and one entry in the scheduler. No second machine and no phone bot. Obsidian if you like it, any editor if you do not.
This is what the installer sets up by default.
The part that matters survives the diet. Notes go into a folder and get summarised,
linked and compiled into a wiki you can search. The six voices still argue with your
thesis. Decisions still carry a prediction and a review date, and brainless calibrate
still nags you when the date passes. The slash commands work in Claude Code or Gemini CLI
exactly as before.
What goes is everything that needs a second machine or a chat relay: the Telegram
capture, the threads on the phone, the morning three, the encrypted backups. Hidden, not
deleted. brainless profile lists them, and brainless profile enable <command> brings
one back if you have the pieces it needs.
You need git and Python 3.11 or newer. On a Mac that is brew install python.
curl -fsSL https://raw.githubusercontent.com/ezapmar/brainless-public/main/install.sh | bashThe script sets up Python and the brainless command, then hands over to
brainless init. It asks a handful of questions, in this order.
-
Your name, and the language it should write in. The folders are named in that
language. In English you get
Inbox,Notes,LibraryandThinking. In Turkish,Gelen,Notlar,KütüphaneandDüşünce. The questions themselves are in English for now. -
Notes you already have. Point it at an old Obsidian vault or any folder of
Markdown. It is linked under
Library/_linked/and read. Nothing is ever written there. - The model. Three kinds, in the table further down. If you pick Ollama and it is not installed, it asks before installing it. If you pick an API, the key goes into the macOS Keychain, or libsecret on Linux. It never touches the folder, because the folder is a git repository, and a git repository is where keys go to leak.
- A test call. One tiny prompt, so you learn now, and not at nine in the evening, that the key had a typo.
-
Background runs. One scheduler entry. On a Mac, if your folder lives in
~/Documents,~/Desktopor iCloud Drive, macOS will ask for permission every time a background job opens it.initwarns you and can open the right settings page.~/brainlessavoids the whole conversation. - A first note and a first run, if you want to watch it work.
Every answer lands in brainless.toml at the top of the folder. Edit it by hand whenever
you like; brainless config show prints what it sets. Running init again keeps the
file unless you pass --force.
For a script, or a machine you set up often, the same questions take flags:
bash install.sh --vault ~/brainless --yes -- --lang en --provider ollama --model qwen3:8b
bash install.sh --yes -- --provider anthropic --api-key-env ANTHROPIC_API_KEY --no-schedulebrainless add "the thing I keep thinking about in the shower"
brainless add ~/Downloads/board-pack.pdf
brainless search "what did I decide about hiring"
brainless dialectic "We should hire before we have the revenue"A thought goes into today's notes. A document goes into the inbox and becomes Markdown
within the hour. The real work happens later. From nine o'clock the digest reads
the day's notes and the compile folds them into the wiki. Then the notes move to
Archive/Daily-Captures/<date>/, so the notes folder starts each day empty. Nothing is
deleted.
Laptops spend more evenings shut than open. So nothing here runs on
the clock. Every 15 minutes, and whenever you log in, brainless tick asks what has not
run since it was last due, and runs that. A missed night runs the next morning when you
open the lid. On a train, the jobs that need the network wait for Wi-Fi and the rest go
ahead. brainless tick also runs everything that is due right now, if you are impatient.
brainless doctor # one line per check
brainless doctor --probe # plus one real call to the model
brainless queue # what ran, what is waiting, what failed and why
brainless queue retry # try the failed ones againA failed job waits 5 minutes, then 30, then 2 hours, then 6, and then it stops and waits for you. I would rather it gave up than kept paying for the same error all night.
When several notes circle the same idea and nothing in the wiki covers it, the compile proposes a concept page. In my own setup the proposal arrives on my phone and I answer in a thread. Here you answer in the terminal.
brainless concepts # what is waiting
brainless concepts review # yes, no or skip, one at a timeAt most five proposals wait at once, and new ones stop until you decide. That limit came from my own vault. In September five proposals sat there for three days before I noticed any of them.
I run it on Claude through a subscription. You do not have to.
| You choose | What it needs | Worth knowing |
|---|---|---|
ollama |
Ollama on this machine | Nothing leaves the laptop. Slower, and a small model writes thinner summaries. Something around 8 billion parameters is a fair start. |
anthropic |
an API key | The default model is claude-opus-5. |
openai, grok, gemini, openrouter
|
an API key | You pick the model during init; python3 tools/llm.py --models <provider> lists them. |
claude-cli |
Claude Code, signed in | Uses the subscription you already pay for. It is also the only one here that can search the web and read photos. |
codex-cli, gemini-cli
|
that tool, signed in | Each call starts in an empty folder, Codex inside its read-only sandbox. They are agents, which is a looser fence than the others, so I would keep them away from anything that reads untrusted text. |
Each provider reads its own key and nobody else's, so a mistake in one setting cannot send
your OpenAI key to xAI. Keys are set with brainless config secret set <name>, using
anthropic_api_key, openai_api_key, xai_api_key, gemini_api_key or
openrouter_api_key. One kind of job can also run on its own model, the short
classifications on something local and the long summaries on something big. See
Local Inference and [llm.lanes] in brainless.toml.example.
brainless schedule uninstall
rm -rf ~/.local/bin/brainless ~/.config/brainlessThat stops the background runs and removes the command. Your notes are still in
~/brainless, and I would leave them there. The keys stay in the Keychain under
brainless until you delete them, or run brainless config secret delete <name> first.
Honest limits, as of September 2026.
- Photos are read only with
claude-cli. With any other model they wait in the inbox. - Web research needs
claude-clitoo. Without it that job is skipped and says so. - Windows does not work yet.
- The person who has installed lite most often is me, into a scratch folder with a fake home directory. If you are among the first strangers to try it, tell me where it broke in the issues. That is the test I have not been able to run myself.
brainless · not a second brain, zero brain. Collect everything, think it through, decide, then do it. Engine repo · MIT. This wiki mirrors the repo's docs/; the repo is the source of truth.
The loop
1. Gather information
2. Think deeper and clearer
3. Decide
4. Get shit done
Keep it yours
Run it
- Install
- Lite
- Configuration
- What it runs on
- Reference Deployment
- Syncing across devices
- The AI Shed
- Localization
Addons
Reference
- Scripts Reference
- FAQ
- References
- Changelog · every release, newest first
- Design · the kilim brain, the palette, the logo files, the terminal colours
