Repository navigation
commands
Look up every Memo command and option here. Commands that work in one messenger or mail account take --provider and --account; Memo never chooses an account for you. Add --json for an answer a script or agent can read. See recipes for whole tasks and using Memo for a normal day.
These options work with the memo command itself.
| Option | What it does |
|---|---|
-V, --version |
output the version number. |
--debug |
on failure, show the full error record: cause and stack. |
messages, mail and notes about a person, each with a link to its source
memo context <person> [options]| Argument | What it is | |
|---|---|---|
person |
required | :, e.g. telegram:Ana or email:ana@example.com. |
| Option | What it does |
|---|---|
--limit <n> |
most messages and notes of each kind. Default: 20. |
--json |
print JSON; --json=id,title keeps only those fields. |
--account <account> |
the stored account to read; required when the store holds several of that messenger. |
notes from your folders, and notes you write here
one note: its text, tags, what it links and what links it
memo notes show <note> [options]| Argument | What it is | |
|---|---|---|
note |
required | note:, document:, or a file in a configured folder. |
| Option | What it does |
|---|---|
--json |
print JSON; --json=id,title keeps only those fields. |
notes, newest first
memo notes list [query] [options]| Argument | What it is | |
|---|---|---|
query |
optional | field:value terms that narrow the list — the fields are below. |
| Option | What it does |
|---|---|
--limit <n> |
most notes, at most 500. Default: 20. |
--page <n> |
which page, from 1. Default: 1. |
--json |
print JSON; --json=id,title keeps only those fields. |
write a note of your own about messages, people, projects or other notes
This command changes the local store or your files.
memo notes add [text] [options]| Argument | What it is | |
|---|---|---|
text |
optional | the note; or --text, or --text-file. |
| Option | What it does |
|---|---|
--text <text> |
the note. |
--text-file <path> |
read the note from a file; - reads stdin. |
--title <title> |
a title. |
--subject <ref> |
what it is about: :, msg:, chat:, person:, organization:, project:, task:, note:, document:, meeting:; repeat for more. |
--meeting <id> |
also about this meeting, by its store id, with --provider and --account. |
--provider <provider> |
the meeting's provider. |
--account <account> |
the meeting's account. |
--export [dir] |
also write it as a file — to this folder, or notes.export.dir. |
--format <format> |
the file's format: obsidian, markdown. |
--json |
print JSON; --json=id,title keeps only those fields. |
change a note you wrote here; a file's note is edited in its file
This command changes the local store or your files.
memo notes edit <id> [options]| Argument | What it is | |
|---|---|---|
id |
required | note: or its id. |
| Option | What it does |
|---|---|
--revision <n> |
its current revision, so an edit made meanwhile is not lost. |
--text <text> |
the new text. |
--text-file <path> |
read the new text from a file; - reads stdin. |
--export [dir] |
also rewrite its file — in this folder, or notes.export.dir. |
--format <format> |
the file's format: obsidian, markdown. |
--json |
print JSON; --json=id,title keeps only those fields. |
delete a note you wrote here; a file it was exported to stays
This command changes the local store or your files.
memo notes remove <id> [options]| Argument | What it is | |
|---|---|---|
id |
required | note: or its id. |
| Option | What it does |
|---|---|
--json |
print JSON; --json=id,title keeps only those fields. |
write the notes you wrote here as files, never overwriting one you edited
This command changes the local store or your files.
memo notes export [options]| Option | What it does |
|---|---|
--output-dir <dir> |
the folder to write to (default: notes.export.dir). |
--format <format> |
the files' format: obsidian, markdown. |
--json |
print JSON; --json=id,title keeps only those fields. |
folders of notes: the id links and the store use, and the path on this computer
give a folder of notes an id, or show the one it has
This command changes the local store or your files.
memo folders add <path> [options]| Argument | What it is | |
|---|---|---|
path |
required | the folder on this computer. |
| Option | What it does |
|---|---|
--format <format> |
how its notes are written: obsidian, markdown (default: obsidian). |
--json |
print JSON; --json=id,title keeps only those fields. |
bind a folder id from another computer to the folder's path on this one
This command changes the local store or your files.
memo folders attach <id> <path> [options]| Argument | What it is | |
|---|---|---|
id |
required | the folder's id, as memo folders add printed it. |
path |
required | the same folder on this computer. |
| Option | What it does |
|---|---|
--format <format> |
how its notes are written: obsidian, markdown. |
--json |
print JSON; --json=id,title keeps only those fields. |
folders of notes on this computer, and those the store knows from another
memo folders list [query] [options]| Argument | What it is | |
|---|---|---|
query |
optional | field:value terms; this list filters by none yet. |
| Option | What it does |
|---|---|
--json |
print JSON; --json=id,title keeps only those fields. |
stored emails; tg and max read messenger messages
one stored email whole, with its attachments' text and nearby thread emails
memo messages show <message> [options]| Argument | What it is | |
|---|---|---|
message |
required | the email's msg:email/… reference, as search answers give it. |
| Option | What it does |
|---|---|
--before-n <n> |
also this many earlier emails of its thread. Default: 0. |
--after-n <n> |
also this many later emails of its thread. Default: 0. |
--full |
whole attachment text, not the first 4000 characters of each. |
--json |
print JSON; --json=id,title keeps only those fields. |
look at a mail account before importing it, and the owner's rules
group an account's mail by sender and list, to decide what to keep or skip
memo mail inspect <account> [options]| Argument | What it is | |
|---|---|---|
account |
required | the account's name in mail.accounts, or its address. |
| Option | What it does |
|---|---|
--since-time <time> |
only mail from this time, ISO 8601 or 30d ago (default: all mail). |
--limit <n> |
show this many of the largest groups. Default: 50. |
--domain-age |
ask each shown sender domain's registry when it was registered (RDAP); tells each registry its domain. |
--json |
print JSON; --json=id,title keeps only those fields. |
how far an account's import is: mail stored, recorded, and left to read
memo mail status <account> [options]| Argument | What it is | |
|---|---|---|
account |
required | the account's name in mail.accounts, or its address. |
| Option | What it does |
|---|---|
--json |
print JSON; --json=id,title keeps only those fields. |
move envelope mail to Gmail's Trash, decided again; dry run unless --yes
This command can send data to the configured AI provider.
memo mail trash <account> [options]| Argument | What it is | |
|---|---|---|
account |
required | the account's name in mail.accounts, or its address. |
| Option | What it does |
|---|---|
--limit <n> |
most emails to move this run (default 5000; a first run moves at most 100). |
--since-time <time> |
only mail received from this time, ISO 8601 or 30d ago; older mail stays. |
--yes |
move the mail; without it, only say what would move. |
--json |
print JSON; --json=id,title keeps only those fields. |
move a cleanup run's mail back from Gmail's Trash; dry run unless --yes
This command can send data to the configured AI provider.
memo mail restore <account> [options]| Argument | What it is | |
|---|---|---|
account |
required | the account's name in mail.accounts, or its address. |
| Option | What it does |
|---|---|
--run <id> |
the run, as memo mail runs lists it. |
--yes |
move the mail back; without it, only say what would move. |
--json |
print JSON; --json=id,title keeps only those fields. |
an account's cleanup runs, how much moved, and until when restorable
memo mail runs <account> [options]| Argument | What it is | |
|---|---|---|
account |
required | the account's name in mail.accounts, or its address. |
| Option | What it does |
|---|---|
--json |
print JSON; --json=id,title keeps only those fields. |
the owner's decisions on which mail to keep, record, skip, tag or protect
one account's rules, protected ones first
memo mail rules list <account> [options]| Argument | What it is | |
|---|---|---|
account |
required | the account's name in mail.accounts, or its address. |
| Option | What it does |
|---|---|
--filter <query> |
is:protected lists only the rules no cleanup may override. |
--json |
print JSON; --json=id,title keeps only those fields. |
decide mail by sender, list, subject, age, size, label or kind; repeats replace
This command changes the local store or your files.
memo mail rules add <account> [options]| Argument | What it is | |
|---|---|---|
account |
required | the account's name in mail.accounts, or its address. |
| Option | What it does |
|---|---|
--sender <address> |
one sender address. |
--domain <domain> |
a sender domain, and its subdomains. |
--list-id <id> |
a mailing list, by its List-Id. |
--filter <query> |
from:<address, domain or word>, to:, subject: (or a bare word), older:d, larger: (5MB, 300KB), has:attachment, label: (label:"Two words"), is:unread, is:bulk, score: (at least); all must hold. |
--kind <kind> |
a built-in kind of mail: social, newsletters, developer, shopping, alerts. |
--do <actions> |
one of skip (never read or store), envelope (store only sender, date, size and labels: counted, out of search, cleanable later), keep (store in full even when a skip or envelope rule matches) or protect (keep, and no cleanup may ever cut, archive or trash it); add tag: to also tag the mail, e.g. envelope,tag:promo. |
--reason <text> |
why, for the owner later. |
--json |
print JSON; --json=id,title keeps only those fields. |
drop the rule with exactly these conditions
This command changes the local store or your files.
memo mail rules remove <account> [options]| Argument | What it is | |
|---|---|---|
account |
required | the account's name in mail.accounts, or its address. |
| Option | What it does |
|---|---|
--sender <address> |
one sender address. |
--domain <domain> |
a sender domain, and its subdomains. |
--list-id <id> |
a mailing list, by its List-Id. |
--filter <query> |
from:<address, domain or word>, to:, subject: (or a bare word), older:d, larger: (5MB, 300KB), has:attachment, label: (label:"Two words"), is:unread, is:bulk, score: (at least); all must hold. |
--kind <kind> |
a built-in kind of mail: social, newsletters, developer, shopping, alerts. |
--json |
print JSON; --json=id,title keeps only those fields. |
propose rules from a Takeout export's Gmail filters; --yes adds them
This command changes the local store or your files.
memo mail rules import-filters <account> <file> [options]| Argument | What it is | |
|---|---|---|
account |
required | the account's name in mail.accounts, or its address. |
file |
required | Takeout's Mail/User settings/Filters.json. |
| Option | What it does |
|---|---|
--yes |
add the proposed rules; without it, only show them. |
--json |
print JSON; --json=id,title keeps only those fields. |
cut stored mail an envelope rule matches to its envelope; dry run unless --yes
This command changes the local store or your files.
memo mail rules apply <account> [options]| Argument | What it is | |
|---|---|---|
account |
required | the account's name in mail.accounts, or its address. |
| Option | What it does |
|---|---|
--since-time <time> |
only mail from this time, ISO 8601 or 30d ago (default: all mail). |
--yes |
change the store; without it, only say what would change. |
--json |
print JSON; --json=id,title keeps only those fields. |
print one account's rules as JSON, to review, keep or move elsewhere
memo mail rules export <account>| Argument | What it is | |
|---|---|---|
account |
required | the account's name in mail.accounts, or its address. |
add the rules of a file from memo mail rules export; same match replaces
This command changes the local store or your files.
memo mail rules import <account> <file> [options]| Argument | What it is | |
|---|---|---|
account |
required | the account's name in mail.accounts, or its address. |
file |
required | the file memo mail rules export wrote. |
| Option | What it does |
|---|---|
--json |
print JSON; --json=id,title keeps only those fields. |
name the note that is about a person, or show it
This command changes the local store or your files.
memo note <identity> [path] [options]| Argument | What it is | |
|---|---|---|
identity |
required | : of any identity of the person. |
path |
optional | the note about them, a file in a configured folder. |
| Option | What it does |
|---|---|
--clear |
forget which file note is about them. |
your labels on stored sources and folders or threads
put labels on one source
This command changes the local store or your files.
memo tags add <tag> [options]| Argument | What it is | |
|---|---|---|
tag |
required | one or more tags: 1–32 letters a–z, digits or hyphens; case is ignored. |
| Option | What it does |
|---|---|
--message <message> |
a stored email or message's full msg: locator. |
--note <reference> |
a note: note:, a file in a notes folder: document:; a bare id is a note. |
--chat <chat> |
a stored mail thread or chat's exact id; requires --provider and --account. |
--provider <provider> |
the chat's provider, such as email. |
--account <account> |
the chat's account, such as a mailbox address. |
--task <id> |
label a task. |
--contact <person> |
label a contact identity, with provider/account. |
--person <uid> |
label a unified person. |
--organization <organization> |
label an organization: its id or organization:. |
--project <project> |
label a project: its key or project:. |
--meeting <id> |
label a meeting by its store id, with --provider and --account. |
--folder <folder> |
label a notes folder by its id or path, or with --subfolder one subfolder: every note under it. |
--subfolder <path> |
the subfolder inside --folder. |
--json |
print JSON; --json=id,title keeps only those fields. |
remove labels from one source
This command changes the local store or your files.
memo tags remove <tag> [options]| Argument | What it is | |
|---|---|---|
tag |
required | one or more tags: 1–32 letters a–z, digits or hyphens; case is ignored. |
| Option | What it does |
|---|---|
--message <message> |
a stored email or message's full msg: locator. |
--note <reference> |
a note: note:, a file in a notes folder: document:; a bare id is a note. |
--chat <chat> |
a stored mail thread or chat's exact id; requires --provider and --account. |
--provider <provider> |
the chat's provider, such as email. |
--account <account> |
the chat's account, such as a mailbox address. |
--task <id> |
label a task. |
--contact <person> |
label a contact identity, with provider/account. |
--person <uid> |
label a unified person. |
--organization <organization> |
label an organization: its id or organization:. |
--project <project> |
label a project: its key or project:. |
--meeting <id> |
label a meeting by its store id, with --provider and --account. |
--folder <folder> |
label a notes folder by its id or path, or with --subfolder one subfolder: every note under it. |
--subfolder <path> |
the subfolder inside --folder. |
--json |
print JSON; --json=id,title keeps only those fields. |
list source labels, optionally in one provider or account
memo tags list [query] [options]| Argument | What it is | |
|---|---|---|
query |
optional | field:value terms that narrow the list — the fields are below. |
| Option | What it does |
|---|---|
--provider <provider> |
only this provider. |
--account <account> |
only this account; requires --provider. |
--limit <n> |
most labels to show. Default: 100. |
--json |
print JSON; --json=id,title keeps only those fields. |
open work linked to stored messages, documents and emails
unlink reviewed project task relationships
This command changes the local store or your files.
memo tasks unlink <task> <other-task> [options]| Argument | What it is | |
|---|---|---|
task |
required | the task: task: or its id. |
other-task |
required | the task it relates to: task: or its id. |
| Option | What it does |
|---|---|
--kind <kind> |
blocked-by, follow-up-of, related-to, duplicate-of, discovered-from. |
--json |
print JSON; --json=id,title keeps only those fields. |
a task's links to other tasks
memo tasks relations <task> [options]| Argument | What it is | |
|---|---|---|
task |
required | the task: task: or its id. |
| Option | What it does |
|---|---|
--json |
print JSON; --json=id,title keeps only those fields. |
whether a task can start, and what it still waits for
memo tasks status <task> [options]| Argument | What it is | |
|---|---|---|
task |
required | the task: task: or its id. |
| Option | What it does |
|---|---|
--json |
print JSON; --json=id,title keeps only those fields. |
add a task from a message, note or document, or one of your own in a project
This command changes the local store or your files.
memo tasks add [source] [options]| Argument | What it is | |
|---|---|---|
source |
optional | msg: source locator, note: or document:; leave out for a task in a project. |
| Option | What it does |
|---|---|
--provider <provider> |
source provider. |
--account <account> |
exact stored account. |
--json |
print JSON; --json=id,title keeps only those fields. |
--title <title> |
one line saying what is to be done. |
--priority <n> |
0 urgent … 4 low. |
--parent <id> |
the parent task, in the same project. |
--description <text> |
the detail, in Markdown. |
--type <type> |
question, request (default), mention or promise from a source; bug, feature or chore (default) in a project. |
--project <project> |
a task without a source: the project's key or project:. |
--assignee <person...> |
who does it: a person's UID. |
--into <id> |
link the source to this task instead of opening one that may be the same job. |
--new |
open the task even when one like it is open or was closed in the last 14 days. |
tasks of one account or one project, open by default
memo tasks list [query] [options]| Argument | What it is | |
|---|---|---|
query |
optional | field:value terms that narrow the list — the fields are below. |
| Option | What it does |
|---|---|
--provider <provider> |
source provider. |
--account <account> |
exact stored account. |
--json |
print JSON; --json=id,title keeps only those fields. |
--limit <n> |
most tasks. Default: 100. |
close a task as done or dismissed
This command changes the local store or your files.
memo tasks close <id> [options]| Argument | What it is | |
|---|---|---|
id |
required | the task's id. |
| Option | What it does |
|---|---|
--provider <provider> |
source provider. |
--account <account> |
exact stored account. |
--json |
print JSON; --json=id,title keeps only those fields. |
--as <state> |
done or dismissed. Default: done. |
--reason <text> |
why it is closed. |
change a task's title, priority, parent or description
This command changes the local store or your files.
memo tasks update <id> [options]| Argument | What it is | |
|---|---|---|
id |
required | the task's id or key. |
| Option | What it does |
|---|---|
--title <title> |
one line saying what is to be done. |
--priority <n> |
0 urgent … 4 low. |
--parent <id> |
the parent task, in the same project. |
--description <text> |
the detail, in Markdown. |
--json |
print JSON; --json=id,title keeps only those fields. |
name who works on a task
This command changes the local store or your files.
memo tasks assign <id> <person> [options]| Argument | What it is | |
|---|---|---|
id |
required | the task's id or key. |
person |
required | explicit canonical person UID. |
| Option | What it does |
|---|---|
--role <role> |
assignee, reviewer, watcher. Default: assignee. |
--json |
print JSON; --json=id,title keeps only those fields. |
what needs a look today, from the local store and without message text: tasks overdue, due or to check, chats where you owe an answer, chats where you wait for one
memo tasks agenda [query] [options]| Argument | What it is | |
|---|---|---|
query |
optional | field:value terms that narrow the list — the fields are below. |
| Option | What it does |
|---|---|
--due-within <duration> |
list tasks due within this: 30m, 2h, 1d (default 1d). |
--unanswered <duration> |
list chats where someone else wrote last this long ago (default 1d). |
--waiting <duration> |
list chats where you wrote last this long ago (default 7d). |
--within <duration> |
leave out chats silent longer than this: they ended (default 30d). |
--holder <name> |
who you are for claims: a session id or a chat id; default WIRECAT_HOLDER, else Claude Code's session, else the agent's name. |
--provider <provider> |
the messenger account's provider: telegram, max. |
--account <account> |
the messenger account, as the store holds it. |
--json |
print JSON. |
set a task's title, description, due date, next check and category; nothing reaches the messenger
This command changes the local store or your files.
memo tasks plan <task> [options]| Argument | What it is | |
|---|---|---|
task |
required | the task's id or key, as tasks list shows it. |
| Option | What it does |
|---|---|
--category <name> |
what it is about, from the list tasks categories prints: money, documents, meeting, …; a change is kept in the task's history. |
--title <title> |
one line: the action and its object — send Alex the API token. |
--description <text> |
the detail, in Markdown: who owes whom, done when, next step, keywords. |
--due <time> |
when it must be done: an ISO 8601 time or 2h, 3d from now; none clears it. |
--remind-time <time> |
when to look at it again: an ISO 8601 time or 2h, 3d from now; none clears it. |
--provider <provider> |
the messenger account's provider: telegram, max. |
--account <account> |
the messenger account, as the store holds it. |
--json |
print JSON. |
one task: its plan and everything linked to it
memo tasks show <task> [options]| Argument | What it is | |
|---|---|---|
task |
required | the task's id or key, as tasks list shows it. |
| Option | What it does |
|---|---|
--provider <provider> |
the messenger account's provider: telegram, max. |
--account <account> |
the messenger account, as the store holds it. |
--json |
print JSON. |
link a task to messages, chats, people or URLs — or to another task: task:
This command changes the local store or your files.
memo tasks link <task> [targets] [options]| Argument | What it is | |
|---|---|---|
task |
required | the task's id or key, as tasks list shows it. |
targets |
optional | msg: locators, person:, document:, note:, a URL; or task:, which links two project tasks. |
| Option | What it does |
|---|---|
--chat <chat> |
a chat it concerns, repeatable; a stored chat, by its id or title. |
--kind <kind> |
related-to (default), evidence — it shows the task is real — or created-from; for task:, related-to, blocked-by, follow-up-of, duplicate-of or discovered-from. |
--provider <provider> |
the messenger account's provider: telegram, max. |
--account <account> |
the messenger account, as the store holds it. |
--json |
print JSON. |
statistics about what the store holds
task statistics
per chat: how many tasks are open, the oldest open one, the median time to close
memo stats tasks show [options]| Option | What it does |
|---|---|
--chat <chat> |
only this chat; a stored chat, by its id or title. |
--type <type> |
only this type: question, request, mention or promise. |
--provider <provider> |
the messenger account's provider: telegram, max. |
--account <account> |
the messenger account, as the store holds it. |
--json |
print JSON. |
companies, teams, families and communities of yours
add an organization of yours: a company, team, family or community
This command changes the local store or your files.
memo organizations add <name> [options]| Argument | What it is | |
|---|---|---|
name |
required | the organization's name. |
| Option | What it does |
|---|---|
--kind <kind> |
company, team, family, community. |
--scope <scope> |
personal, work. |
--json |
print JSON; --json=id,title keeps only those fields. |
your organizations
memo organizations list [options]| Option | What it does |
|---|---|
--json |
print JSON; --json=id,title keeps only those fields. |
one organization by its id or organization:: its relationships, the notes about or linking it, and its tags
memo organizations context <organization> [options]| Argument | What it is | |
|---|---|---|
organization |
required | its id or organization:. |
| Option | What it does |
|---|---|
--json |
print JSON; --json=id,title keeps only those fields. |
projects of yours, each with a short key
explicit account-scoped project membership
meetings linked to a project in one account, or with confirmed:false proposed
memo projects meetings list <project> [query] [options]| Argument | What it is | |
|---|---|---|
project |
required | project reference, key or explicit alias. |
query |
optional | field:value terms that narrow the list — the fields are below. |
| Option | What it does |
|---|---|
--provider <provider> |
meeting provider. |
--account <account> |
exact stored meeting account. |
--json |
print JSON; --json=id,title keeps only those fields. |
--limit <n> |
meetings per page, at most 500. Default: 50. |
--page <n> |
which page, from 1. |
link a stored meeting to a project, or confirm a proposed link
This command changes the local store or your files.
memo projects meetings link <project> <meeting-id> [options]| Argument | What it is | |
|---|---|---|
project |
required | project reference, key or explicit alias. |
meeting-id |
required | positive stored meeting id. |
| Option | What it does |
|---|---|
--provider <provider> |
meeting provider. |
--account <account> |
exact stored meeting account. |
--json |
print JSON; --json=id,title keeps only those fields. |
--fingerprint <hash> |
required when confirming an existing proposal. |
--reason <text> |
why the reviewed meeting belongs to this project. |
add a project of yours, with a short key its tasks use
This command changes the local store or your files.
memo projects add <name> [options]| Argument | What it is | |
|---|---|---|
name |
required | the project's name. |
| Option | What it does |
|---|---|
--key <key> |
3–4 letters and digits; made from the name when left out. |
--type <type> |
work, client, personal, oss, other. |
--organization <organization> |
the organization it belongs to: its id or organization:. |
--scope <scope> |
personal, work. |
--json |
print JSON; --json=id,title keeps only those fields. |
your projects
memo projects list [options]| Option | What it does |
|---|---|
--json |
print JSON; --json=id,title keeps only those fields. |
one project by its id, key or project:: its key documents first, then its relationships, the notes about or linking it, and its tags. Start work on a project here
memo projects context <project> [options]| Argument | What it is | |
|---|---|---|
project |
required | its id, key or project:. |
| Option | What it does |
|---|---|
--json |
print JSON; --json=id,title keeps only those fields. |
the notes, files and messages to read first about a project, each with why
mark a note:, document: or msg: reference as a key document of the project
This command changes the local store or your files.
memo projects key-documents add <project> <reference> [options]| Argument | What it is | |
|---|---|---|
project |
required | id, key or project:. |
reference |
required | note:, document: or msg: reference. |
| Option | What it does |
|---|---|
--reason <text> |
why it is key, in a few words. |
--json |
print JSON; --json=id,title keeps only those fields. |
--as-owner |
record it as yours although an agent's terminal runs memo (AI_AGENT or CLAUDECODE set). |
unmark a key document; the note, file or message stays
This command changes the local store or your files.
memo projects key-documents remove <project> <reference> [options]| Argument | What it is | |
|---|---|---|
project |
required | id, key or project:. |
reference |
required | the key document's note:, document: or msg: reference. |
| Option | What it does |
|---|---|
--json |
print JSON; --json=id,title keeps only those fields. |
a project's key documents: why, who marked each and whether it is still there
memo projects key-documents list <project> [options]| Argument | What it is | |
|---|---|---|
project |
required | id, key or project:. |
| Option | What it does |
|---|---|
--json |
print JSON; --json=id,title keeps only those fields. |
relations between people, organizations and projects; never between identities
state that a person, organization or project belongs to or relates to another; an agent's waits for you to confirm it
This command changes the local store or your files.
memo relationships add <from> <to> [options]| Argument | What it is | |
|---|---|---|
from |
required | the person:, organization: or project: that belongs or relates. |
to |
required | the person:, organization: or project: it belongs or relates to. |
| Option | What it does |
|---|---|
--as-owner |
record it as yours although an agent's terminal runs memo (AI_AGENT or CLAUDECODE set). |
--json |
print JSON; --json=id,title keeps only those fields. |
--kind <kind> |
member-of or related-to. Default: member-of. |
--role <role> |
the role it has there, in a few words, such as cto. |
--reason <text> |
why you think so, in a sentence. |
relationships, all or those of one reference
memo relationships list [query] [options]| Argument | What it is | |
|---|---|---|
query |
optional | field:value terms that narrow the list — the fields are below. |
| Option | What it does |
|---|---|
--json |
print JSON; --json=id,title keeps only those fields. |
remove a relationship
This command changes the local store or your files.
memo relationships remove <id> [options]| Argument | What it is | |
|---|---|---|
id |
required | the relationship's id, as relationships list gives it. |
| Option | What it does |
|---|---|
--json |
print JSON; --json=id,title keeps only those fields. |
confirm a suggested relationship
This command changes the local store or your files.
memo relationships confirm <id> [options]| Argument | What it is | |
|---|---|---|
id |
required | the relationship's id, as relationships list gives it. |
| Option | What it does |
|---|---|
--json |
print JSON; --json=id,title keeps only those fields. |
suggest relationships between email contacts of one domain; you confirm each
memo relationships suggest [options]| Option | What it does |
|---|---|
--provider <provider> |
source provider. |
--account <account> |
exact stored account. |
--json |
print JSON; --json=id,title keeps only those fields. |
--limit <n> |
most suggestions, at most 100. Default: 20. |
durable local reminders; poll hands one out and ack confirms it was shown
add a reminder for an open task
This command changes the local store or your files.
memo reminders add <task> [options]| Argument | What it is | |
|---|---|---|
task |
required | the task's id. |
| Option | What it does |
|---|---|
--provider <provider> |
source provider. |
--account <account> |
exact stored account. |
--json |
print JSON; --json=id,title keeps only those fields. |
--at-time <time> |
when to remind: an ISO 8601 time with its UTC offset. |
--timezone <zone> |
IANA timezone. Default: UTC. |
pending reminders of one account
memo reminders list [options]| Option | What it does |
|---|---|
--provider <provider> |
source provider. |
--account <account> |
exact stored account. |
--json |
print JSON; --json=id,title keeps only those fields. |
hand out due reminders, each with a receipt to acknowledge
This command changes the local store or your files.
memo reminders poll [options]| Option | What it does |
|---|---|
--provider <provider> |
source provider. |
--account <account> |
exact stored account. |
--json |
print JSON; --json=id,title keeps only those fields. |
--limit <n> |
most due reminders, at most 500. Default: 100. |
confirm that a handed-out reminder was shown
This command changes the local store or your files.
memo reminders ack <id> <receipt> [options]| Argument | What it is | |
|---|---|---|
id |
required | the reminder's id. |
receipt |
required | the receipt reminders poll handed out with it. |
| Option | What it does |
|---|---|
--provider <provider> |
source provider. |
--account <account> |
exact stored account. |
--json |
print JSON; --json=id,title keeps only those fields. |
cancel a reminder
This command changes the local store or your files.
memo reminders cancel <id> [options]| Argument | What it is | |
|---|---|---|
id |
required | the reminder's id. |
| Option | What it does |
|---|---|
--provider <provider> |
source provider. |
--account <account> |
exact stored account. |
--json |
print JSON; --json=id,title keeps only those fields. |
move a reminder to another time
This command changes the local store or your files.
memo reminders update <id> [options]| Argument | What it is | |
|---|---|---|
id |
required | the reminder's id. |
| Option | What it does |
|---|---|
--provider <provider> |
source provider. |
--account <account> |
exact stored account. |
--json |
print JSON; --json=id,title keeps only those fields. |
--at-time <time> |
the new time: an ISO 8601 time with its UTC offset. |
--revision <n> |
the reminder's current revision, as reminders list gives it. |
canonical projects, tags and topics with explicit aliases
list canonical IDs, aliases, usage counts and a preview fingerprint
memo vocabulary list [query] [options]| Argument | What it is | |
|---|---|---|
query |
optional | field:value terms that narrow the list — the fields are below. |
| Option | What it does |
|---|---|
--max-entries <n> |
catalog input budget, not a page size. |
--max-read-bytes <bytes> |
catalog input byte budget. |
--json |
print JSON; --json=id,title keeps only those fields. |
the project, tag or topic an exact name or alias names; ambiguity is reported
memo vocabulary show <name> [options]| Argument | What it is | |
|---|---|---|
name |
required | the name or alias to look up, exactly. |
| Option | What it does |
|---|---|
--kind <kind> |
project, tag or topic. |
--scope <scope> |
personal or work projects. |
--max-entries <n> |
catalog input budget, not a page size. |
--max-read-bytes <bytes> |
catalog input byte budget. |
--json |
print JSON; --json=id,title keeps only those fields. |
check a new name for an existing label or likely duplicates before vocabulary create, or without a name the whole vocabulary for likely synonyms. It merges and creates nothing
memo vocabulary check [name] [options]| Argument | What it is | |
|---|---|---|
name |
optional | a tag or topic you mean to create; without it, the whole vocabulary. |
| Option | What it does |
|---|---|
--kind <kind> |
project, tag or topic. |
--scope <scope> |
personal or work projects. |
--max-entries <n> |
catalog input budget, not a page size. |
--max-read-bytes <bytes> |
catalog input byte budget. |
--json |
print JSON; --json=id,title keeps only those fields. |
--min-similarity <n> |
without a name: minimum lexical similarity, 0.65–1. |
--max-comparisons <n> |
without a name: most name comparisons. |
--limit <n> |
without a name: most candidate pairs. |
owner: create a distinct tag or topic after vocabulary check
This command changes the local store or your files.
memo vocabulary create <name> [options]| Argument | What it is | |
|---|---|---|
name |
required | the new tag or topic. |
| Option | What it does |
|---|---|
--kind <kind> |
tag or topic. |
--fingerprint <hash> |
the creation_fingerprint vocabulary check gave. |
--json |
print JSON; --json=id,title keeps only those fields. |
owner-reviewed aliases on stable canonical IDs
owner: add another name for a project, tag or topic
This command changes the local store or your files.
memo vocabulary aliases add <reference> <name> [options]| Argument | What it is | |
|---|---|---|
reference |
required | project:, tag: or topic:, from vocabulary list. |
name |
required | the other name. |
| Option | What it does |
|---|---|
--fingerprint <hash> |
the current vocabulary preview fingerprint. |
--json |
print JSON; --json=id,title keeps only those fields. |
owner: remove another name from a project, tag or topic
This command changes the local store or your files.
memo vocabulary aliases remove <reference> <alias-id> [options]| Argument | What it is | |
|---|---|---|
reference |
required | project:, tag: or topic:, from vocabulary list. |
alias-id |
required | the alias's id, from vocabulary list. |
| Option | What it does |
|---|---|
--fingerprint <hash> |
the current vocabulary preview fingerprint. |
--json |
print JSON; --json=id,title keeps only those fields. |
what agents and you concluded, with evidence; you confirm an agent's
write a memory; an agent's waits as proposed until you confirm it
This command changes the local store or your files.
memo memories add <text> [options]| Argument | What it is | |
|---|---|---|
text |
required | what is true, in a sentence or two. |
| Option | What it does |
|---|---|
--as-owner |
record it as yours although an agent's terminal runs memo (AI_AGENT or CLAUDECODE set). |
--kind <kind> |
summary, digest, preference. |
--scope <scope> |
personal or work. |
--evidence <ref...> |
what shows it: msg:, note:, meeting:, person: or another reference. |
--subject <ref> |
what it is about, as a reference. |
--json |
print JSON; --json=id,title keeps only those fields. |
memories, newest first
memo memories list [query] [options]| Argument | What it is | |
|---|---|---|
query |
optional | field:value terms that narrow the list — the fields are below. |
| Option | What it does |
|---|---|
--limit <n> |
most memories, up to 500. Default: 100. |
--json |
print JSON; --json=id,title keeps only those fields. |
one memory with its evidence
memo memories show <ref> [options]| Argument | What it is | |
|---|---|---|
ref |
required | memory:. |
| Option | What it does |
|---|---|
--json |
print JSON; --json=id,title keeps only those fields. |
stand behind a memory: its evidence was checked now
This command changes the local store or your files.
memo memories confirm <ref> [options]| Argument | What it is | |
|---|---|---|
ref |
required | memory:. |
| Option | What it does |
|---|---|
--json |
print JSON; --json=id,title keeps only those fields. |
mark a memory whose evidence no longer holds
This command changes the local store or your files.
memo memories stale <ref> [options]| Argument | What it is | |
|---|---|---|
ref |
required | memory:. |
| Option | What it does |
|---|---|
--json |
print JSON; --json=id,title keeps only those fields. |
what happened — said, asked, decided, promised — with evidence
record a fact; an agent's waits as proposed until you confirm it
This command changes the local store or your files.
memo facts add <statement> [options]| Argument | What it is | |
|---|---|---|
statement |
required | what happened, in one sentence. |
| Option | What it does |
|---|---|
--as-owner |
record it as yours although an agent's terminal runs memo (AI_AGENT or CLAUDECODE set). |
--kind <kind> |
fact, statement, question, decision, promise. |
--evidence <ref...> |
what shows it: msg:, note:, meeting:, person: or another reference. |
--project <project> |
the project it belongs to: its key or project:. |
--subject <ref> |
what it is about, as a reference. |
--occurred-time <time> |
when it happened, as the evidence shows, ISO 8601. |
--scope <scope> |
personal or work. |
--supersedes <ref> |
a decision only: the decision this one replaces. |
--json |
print JSON; --json=id,title keeps only those fields. |
facts, latest first
memo facts list [query] [options]| Argument | What it is | |
|---|---|---|
query |
optional | field:value terms that narrow the list — the fields are below. |
| Option | What it does |
|---|---|
--limit <n> |
most facts, up to 500. Default: 100. |
--json |
print JSON; --json=id,title keeps only those fields. |
one fact with its evidence
memo facts show <ref> [options]| Argument | What it is | |
|---|---|---|
ref |
required | fact:. |
| Option | What it does |
|---|---|
--json |
print JSON; --json=id,title keeps only those fields. |
stand behind a fact an agent proposed; a decision it supersedes stops holding
This command changes the local store or your files.
memo facts confirm <ref> [options]| Argument | What it is | |
|---|---|---|
ref |
required | fact:. |
| Option | What it does |
|---|---|
--json |
print JSON; --json=id,title keeps only those fields. |
an accepted decision no longer holds, and nothing replaced it
This command changes the local store or your files.
memo facts reverse <ref> [options]| Argument | What it is | |
|---|---|---|
ref |
required | fact:. |
| Option | What it does |
|---|---|
--json |
print JSON; --json=id,title keeps only those fields. |
what an agent proposes to do; confirming one makes it your task, nothing is sent
propose an action, such as a reply or a ban, in the account that would act
This command changes the local store or your files.
memo actions add <kind> [options]| Argument | What it is | |
|---|---|---|
kind |
required | a lower-case word: reply, send, ban, mute, pin, invite, create_task, …. |
| Option | What it does |
|---|---|
--as-owner |
record it as yours although an agent's terminal runs memo (AI_AGENT or CLAUDECODE set). |
--reason <text> |
why it should be done. |
--provider <provider> |
the provider of the account that would act. |
--account <account> |
the account that would act, when the provider has several. |
--target <ref> |
what it acts on: msg:, chat:, contact:, person:, task:, …. |
--payload <json> |
what to do, as JSON, such as the reply's text. |
--json |
print JSON; --json=id,title keeps only those fields. |
proposed actions, newest first
memo actions list [query] [options]| Argument | What it is | |
|---|---|---|
query |
optional | field:value terms that narrow the list — the fields are below. |
| Option | What it does |
|---|---|
--limit <n> |
most actions, up to 500. Default: 100. |
--json |
print JSON; --json=id,title keeps only those fields. |
one proposed action, with its payload
memo actions show <id> [options]| Argument | What it is | |
|---|---|---|
id |
required | the action's id, as actions list gives it. |
| Option | What it does |
|---|---|
--json |
print JSON; --json=id,title keeps only those fields. |
confirm it: it becomes a task in the account that would act; nothing is sent
This command changes the local store or your files.
memo actions confirm <id> [options]| Argument | What it is | |
|---|---|---|
id |
required | the action's id, as actions list gives it. |
| Option | What it does |
|---|---|
--json |
print JSON; --json=id,title keeps only those fields. |
reject it; nothing is done
This command changes the local store or your files.
memo actions reject <id> [options]| Argument | What it is | |
|---|---|---|
id |
required | the action's id, as actions list gives it. |
| Option | What it does |
|---|---|
--json |
print JSON; --json=id,title keeps only those fields. |
what agents did through the MCP servers that share the store
one row per tool call, newest first: agent, tool, tier, outcome and times, never its arguments
memo agents log [query] [options]| Argument | What it is | |
|---|---|---|
query |
optional | field:value terms that narrow the list — the fields are below. |
| Option | What it does |
|---|---|
--limit <n> |
most rows, up to 500. Default: 100. |
--json |
print JSON; --json=id,title keeps only those fields. |
serve memories, proposed actions and the agent log over MCP on stdin and stdout
This command changes the local store or your files.
memo mcpsearch stored messages, mail, notes and memories; search all when unsure where
messages, mail and notes ranked together; not people, memories, projects or decisions. A kind you know reads better with its own search, with all its fields
memo search all <query> [options]| Argument | What it is | |
|---|---|---|
query |
required | words, phrases, Boolean operators and field queries. |
| Option | What it does |
|---|---|
--limit <n> |
most results, at most 100. Default: 20. |
--exact |
words as written; skip meaning search. |
--timezone <zone> |
IANA timezone for calendar date boundaries. |
--json |
print JSON; --json=id,title keeps only those fields. |
--brief |
each message or email as reference, time, sender and excerpt only. |
--full |
each message or email with its whole text; --json keeps the excerpt, messages show the text. |
--only <resources> |
messages,mail,notes, separated by commas. |
--project <project> |
rank the key documents of this project (id, key or project:) first; nothing is left out. |
stored messenger messages only
memo search messages <query> [options]| Argument | What it is | |
|---|---|---|
query |
required | words, phrases, Boolean operators and field queries. |
| Option | What it does |
|---|---|
--limit <n> |
most results, at most 100. Default: 20. |
--exact |
words as written; skip meaning search. |
--timezone <zone> |
IANA timezone for calendar date boundaries. |
--json |
print JSON; --json=id,title keeps only those fields. |
--brief |
each message or email as reference, time, sender and excerpt only. |
--full |
each message or email with its whole text; --json keeps the excerpt, messages show the text. |
imported emails only
memo search mail <query> [options]| Argument | What it is | |
|---|---|---|
query |
required | words, phrases, Boolean operators and field queries. |
| Option | What it does |
|---|---|
--limit <n> |
most results, at most 100. Default: 20. |
--exact |
words as written; skip meaning search. |
--timezone <zone> |
IANA timezone for calendar date boundaries. |
--json |
print JSON; --json=id,title keeps only those fields. |
--brief |
each message or email as reference, time, sender and excerpt only. |
--full |
each message or email with its whole text; --json keeps the excerpt, messages show the text. |
--account <account> |
only this mail account, by its name in mail.accounts or its address (default: every mail account). |
native notes by words and, with the local model, meaning
memo search notes <query> [options]| Argument | What it is | |
|---|---|---|
query |
required | words, phrases, Boolean operators and field queries. |
| Option | What it does |
|---|---|
--limit <n> |
most results, at most 100. Default: 20. |
--exact |
words as written; skip meaning search. |
--timezone <zone> |
IANA timezone for calendar date boundaries. |
--json |
print JSON; --json=id,title keeps only those fields. |
--brief |
each message or email as reference, time, sender and excerpt only. |
--full |
each message or email with its whole text; --json keeps the excerpt, messages show the text. |
--filter <query> |
another query every note must match. |
--source <accounts> |
only these notes accounts, separated by commas: notes:internal for notes written in memo, notes: as a hit shows it, notes or group:. |
--page <n> |
which page, from 1. Default: 1. |
--project <project> |
rank the key documents of this project (id, key or project:) first, labelled key; nothing is left out. |
memories holding every word, best first
memo search memories <query> [options]| Argument | What it is | |
|---|---|---|
query |
required | the words to find; scope:personal or scope:work narrows them. |
| Option | What it does |
|---|---|
--limit <n> |
most memories, up to 500. Default: 20. |
--json |
print JSON; --json=id,title keeps only those fields. |
prepare cited evidence for your agent, or explicitly call a configured model
memo ask <question> [query] [options]| Argument | What it is | |
|---|---|---|
question |
required | the question, in your own words. |
query |
optional | what to search for: words, phrases, Boolean operators and field queries; default the question. |
| Option | What it does |
|---|---|
--all |
look in every stored account and the notes. |
--provider <provider> |
look in this provider's accounts only, such as telegram or email. |
--account <account> |
look in this stored account only, with --provider. |
--limit <n> |
most evidence items, at most 100. Default: 20. |
--analyze |
call MEMO_MODELS_ANALYSIS_PROVIDER/MODEL instead of returning an evidence bundle. |
--allow-remote |
explicitly consent to sending this evidence to the configured model. |
--json |
print JSON; --json=id,title keeps only those fields. |
bring notes and mail up to date in the store, only what changed. Every configured folder and mail account unless narrowed; a notes option syncs notes only, a mail option mail only, unless both are given
This command changes the local store or your files.
memo sync [options]| Option | What it does |
|---|---|
--only <resources> |
notes,mail, separated by commas. |
--folder <folder> |
notes: only this configured folder, by its id or path; repeat for more. |
--ignore <path> |
notes: also skip this file or folder, a path or a glob; repeat for more. |
--account <account> |
mail: only this account, by its name in mail.accounts or its address; repeat for more. |
--since-time <time> |
mail: read from this time, ISO 8601 or 30d ago (default: 30d). |
--limit <n> |
mail: most new emails to read per account this run (default: 200). |
--retry-attachments |
mail: reread stored emails' attachments after installing an extraction engine. |
--rescan |
mail: list every message again, not only mail an earlier run left; also checks deletions. |
--no-embed |
skip embedding notes and mail for search by meaning this run. |
--json |
print JSON; --json=id,title keeps only those fields. |
run memo sync on a systemd user timer, set in the config
sync every --every (default auto.every, else 5m), starting a minute from now
This command changes the local store or your files.
memo auto start [options]| Option | What it does |
|---|---|
--every <duration> |
how often: 5m, 90s, 1h — a minute or more. |
stop syncing on a timer and remove the timer
This command changes the local store or your files.
memo auto stopwhether the timer is on, its interval, its next run and how the last one ended
memo auto status [options]| Option | What it does |
|---|---|
--json |
print JSON; --json=id,title keeps only those fields. |
where memo keeps its files and what needs attention; connects to nothing
memo doctor [options]| Option | What it does |
|---|---|
--json |
print JSON; --json=id,title keeps only those fields. |
upgrade memo with the package manager that installed it; --check only looks
This command changes the local store or your files.
memo upgrade [options]| Option | What it does |
|---|---|
--check |
say whether a newer version exists, and install nothing. |
--json |
print JSON. |
discover the command tree and options as shared registry data
memo commands [path] [options]| Argument | What it is | |
|---|---|---|
path |
optional | one command, such as tags add. |
| Option | What it does |
|---|---|
--json |
print JSON; --json=id,title keeps only those fields. |
the instructions an agent is given for this tool
print SKILL.md — memo skill install puts it where Claude Code, Codex and Gemini CLI look for it
memo skill showwrite SKILL.md to ~/.claude/skills/cli-memo/ (Claude Code) and ~/.agents/skills/cli-memo/ (Codex, Gemini CLI)
This command changes the local store or your files.
memo skill install [options]| Option | What it does |
|---|---|
--for <agents> |
which agents to install for. One of: claude, agents, all. Default: all. |
Failures use the shared WireCat error contract.
| Code | When |
|---|---|
0 |
it worked |
2 |
validation_error |
3 |
configuration_error |
4 |
authentication_error |
5 |
permission_error |
6 |
not_found |
7 |
confirmation_required |
8 |
rate_limited |
9 |
timeout |
10 |
network_error |
11 |
provider_error |
12 |
provider_unavailable |
13 |
invalid_response |
14 |
outcome_unknown |
130 |
cancelled |
1 |
anything else |