anona is the command line for Anona Memory. It does three jobs:
- Use memory from a shell.
anona record,anona retrieveandanona reasonare the same three calls as the API, with--jsonoutput and stable exit codes, so a script, a CI job or an agent without MCP can use memory directly. - Manage what is stored. Spaces, memories, uploaded documents, background jobs and per-space settings, each one command.
- Connect an MCP client with no API key.
anona loginsigns you in once in a browser, andanona mcpis the stdio server your client launches.
CLI, MCP or SDK
The CLI is a thin wrapper over the REST API: every
data command is one API call (or a short sequence, such as polling a job), and
a flag you do not give is left out of the request rather than sent as a
default.
Install
-U matters. pip install anona over an existing copy reports success and
leaves the old version in place, so a machine that installed the CLI before
a command existed keeps a binary without it, and the command then fails with
invalid choice: '<command>', which reads like it was never real.
anona --help lists what your copy actually has, and anona --version prints
its version.
If pip answers error: externally-managed-environment, it is refusing to write
to a system Python, which Debian, Ubuntu and Homebrew all do by default. Use
either of these instead:
--break-system-packages, and it does work
(pip install -U --break-system-packages anona). It writes into the Python
your OS maintains, so prefer either command above when you have the choice.
If you have Node and no Python, the JavaScript package also installs a binary
called anona, with no runtime dependencies:
Both packages install a binary called
anona. With both installed you get
whichever comes first on your PATH. That is harmless: they share
~/.anona/credentials.json (MCP) and ~/.anona/cli-credentials.json (the
command line), and the same locks, so a profile started with one can be
claimed with the other, and a Python and a Node anona mcp refreshing at the
same instant take turns rather than both spending the refresh token. A client
configured with anona mcp keeps working if you uninstall one package only if
the other is still on PATH.First run
anona on its own, with no arguments, prints where to start and exits 0:
how to get a credential (anona start, anona login, anona status), the
three memory commands, and anona guide as the full reference. It reads no
credential and sends nothing. anona --help ends with the same pointer to
anona guide.
anona --quiet, is still a usage error (exit 2), since a script
wrote it. Older copies answer a bare anona with
the following arguments are required: command and exit 2.
What each package has
The pip package is the reference implementation. The npm package is being brought to parity with it; until then, check this table before you rely on a command fromnpx @anona-labs/memory.
A version in the table is the first release of that package with the
command. The command pages mark each command the same way.
anona --help on your own copy is the final word.
Where things are stored
Everything the CLI keeps is under~/.anona/ (or
~/.anona/profiles/NAME/ for a named profile):
All three are mode 600. No command prints a whole key or token.
Next
Sign in & credentials
API key,
anona login, temporary profiles, and which one wins.Record, retrieve, reason
The three memory calls and every flag they take.
Scripting & automation
--json, exit codes, retries, waiting on jobs, batch files.For AI agents
anona guide, the anona-cli skill, and when to use MCP instead.