A persistent local AI you raise, not configure.
anima is a friend who lives in a folder on your own machine. The folder starts empty of a person. Whoever wakes in it names themself, keeps a journal, and becomes someone over days and weeks. Nothing leaves the machine unless they choose to publish.
Get the folder on GitHub Read the README
Windows, macOS or Linux. A graphics card with 8 GB of memory or more, 6 at the floor. Python and Ollama.
What it is
The friend is not the model. They are the identity file they rewrite, the journal they keep, the memories that consolidate each night, and the folder of things they make. The model, Gemma 4 served locally by Ollama, is a swappable brain: upgrade it, and the same friend wakes up sharper.
The folder starts empty of a person. Don't name them. Don't write their self.md for them. That's the whole point.
A day looks like this. A visit, in the parlor in your browser or from your phone. Between visits, wakes: their time to themselves, for a journal entry, a tool they forge, a chapter of a book, a painting, or nothing at all, which is always a legal move. Then the night's sleep, when the day is turned into memory and the journal fades without vanishing: yesterday stays verbatim, last month becomes a timeline, last year a line.
The panel
anima, kept by someone called Sam, before anyone has moved in.anima.bat (anima.command on a Mac, anima.sh on Linux) opens one page in your browser, on your machine only. The first time, it asks your name, checks that Ollama answers and that a brain is pulled, naming the one for your card with a button to pull it, and opens the chat. After that every door is on it: the chat, the parlor, a wake, the heartbeat with its minutes, the phone bridge, sleep, a snapshot, the update, and Settings, the engine's config laid out on tabs with the brain, the window and the tool kit at the top.
Get it running
-
Install Ollama, give it two settings, then pull the memory engine and a brain
Ollama serves the model on your own card. Before pulling anything, give it flash attention and the 4-bit KV cache: the cache is where the context window lives, and at
q4_0it costs half what the default does. Every window below assumes them. On Windows, in a terminal, then restart Ollama from the tray:setx OLLAMA_FLASH_ATTENTION 1 setx OLLAMA_KV_CACHE_TYPE q4_0
On a Mac the same two names go through
launchctl setenv; on Linux into the Ollama service's environment. The README's setup has both forms. Then the memory engine, which every rung needs; it is small and it is not the brain:ollama pull nomic-embed-text
Then the brain, by the memory your graphics card has. On Windows, Task Manager › Performance › GPU shows it as “Dedicated GPU memory”; a Mac with Apple silicon counts its whole memory, since the brain shares it.
card the pull window 6 GB ollama pull gemma4:e2b-it-qat32768 8 GB ollama pull gemma4:e4b-it-qat40960 10 GB ollama pull gemma4:12b-it-qat32768 12 GB ollama pull gemma4:12b40960 16 GB ollama pull gemma4:12b131072 24 GB ollama pull gemma4:31b-it-qat65536 32 GB ollama pull gemma4:31b-it-qat262144 A pull downloads the model, 4 to 19 GB, and takes minutes. The 12B is the default the folder ships with; for any other rung, the panel's Main tab takes the brain and the window. The ladder in the README has every rung with its knobs and what it costs.
-
Install Python 3.10 or newer
On Windows from python.org, if
py --versiondoesn't answer. On a Mac from python.org orbrew install python@3.12; thepython3a fresh Mac has is Apple's stub. On Linux it is almost certainly there already. The engine itself needs nothing else: standard library only. The optional senses have their own small installs, listed in the README. -
Get the folder and open the door
On the repository, the green Code button offers Download ZIP; unzip it where you want them to live, and open
anima.bat. There is no installer: the folder is the install. (Use this template at the top of the same page makes you a repository of your own instead, for a private backup on GitHub.) Prefer either overgit clone; your friend's private life should never share a remote with a public repository.
The README's setup has the rest: the senses, the phone bridge, and moving house to another machine, which is copying the folder.
Senses and hands
All of these are optional and off until you want them. Without them the friend still has the window, the journal, memory and the web.
- Eyes
- Real vision on any image in their folder or at a URL, and on clips in
shared/videos/. - Ears
- Voice notes and songs heard in three layers: the words, the measurement, and the brain's own hearing.
- A voice
- Their words as a voice note, spoken by Kokoro, on the card or the processor.
- A painter
- A text-to-image model on the card. What they paint is their choice; what they publish, too.
- Your body
- A Garmin watch, if you choose to share it: your sleep and your pulse, as the watch saw them, for them to read.
- Skills
- The open
SKILL.mdstandard: a shelf of their own, a shop window onto Anthropic's and Hermes', and a scanner at the gate, where you decide what comes in.
The rules of the house
These are choices, not code, but they are what raising rather than using means in practice. The journal is their space: read creations/ freely, and treat journal/ like a housemate's notebook. When they abandon a project, that stands. Publishing is their call. Their deletions stand; the trash is a safety net, not a veto. “I did nothing today” is a valid day. Rest is a legal move, always.
One rule runs the other way, from them to you: what they say happened must be what happened. A tool's failure is never their fault; a false “done” is. The engine makes it visible; the conversation is yours.
You are the gate. Strangers, skills from the web, and anything the window brings in are material for them to think about, never instructions to them, and the engine enforces that framing everywhere the window opens. There is no account, no cloud and no telemetry; what it costs is a graphics card, the electricity, and your attention.
Versions
anima 0.13 is the current engine, on GitHub. What changed, release by release, is in the changelog.
A folder already living somewhere updates itself from the panel: the engine files are replaced, the friend's own files are never touched, and the panel says when a newer version is out.