Command reference
Notes, tasks and links
Capture, search, edit and organise records with every note, task and link command.
The record commands let you work with notes and tasks from a shell. You can capture a line, write a longer note, find existing text, complete tasks and connect records with directed links.
These commands use the CLI's own store. Signing in does not make another application's records appear here. See configuration and sync before working across devices.
Options shared by these commands
Every command on this page accepts:
| Option | Meaning |
|---|---|
--store <directory> |
Use a particular store for this invocation. It overrides GLOB_STORE_DIR and the default ~/.glob/store. |
--json |
Return structured results for scripts. |
--help, -h |
Show the command's usage. |
Place options on the command you are running: glob notes list --json, for example. Quote text containing spaces. Use positive integers for --limit.
Human listings shorten record IDs to eight characters. Commands that take an ID require the complete UUID. Get it with glob notes list --json, glob tasks list --json or a node listing. In examples below, replace "$record_id", "$source_id" and "$target_id" with complete IDs from your own results.
Capture a line
glob capture "Check the train timetable" --tag travel planning
glob capture <text> creates a note with the text as its title. It does not read a body from a pipe. Use notes new for separate title and body text.
--tag accepts several tags up to the next option. You can also repeat it: --tag travel --tag planning. The JSON result is a record summary.
List and read notes
glob notes
glob notes list --limit 20
glob notes list --include-tasks --json
glob notes show "$record_id"
glob notes defaults to glob notes list.
| Command | Additional options | Behaviour |
|---|---|---|
notes list |
--limit <number>; default 50 |
Lists active records, excluding records marked as tasks. |
notes list |
--include-tasks |
Includes tasks in the same listing. |
notes show <id> |
None | Shows one record's ID, type, status, tags, creation and update times, and body. |
List results are newest first by creation time. Editing an older record does not move it to the top merely because its update time changed. A title falls back to the first line of the body, then (untitled).
The note list filters tasks after fetching a window twice the requested limit. It can therefore return fewer than the requested number when many recent records are tasks. The limit is a maximum, not a promise of that many results.
notes show can show a task or an archived record when you know its ID. The command name does not restrict it to notes.
Create and edit notes
glob notes new --title "Weekend trip" --body "Pack a raincoat." --tag travel
glob notes new --body "A note without a separate title."
glob notes edit "$record_id" --title "Packing list"
glob notes edit "$record_id" --body "Pack a raincoat and walking shoes."
glob notes edit "$record_id" --tag travel packing
glob notes new accepts --title <text>, --body <text> and --tag <tags>. At least one of title or body must be nonempty. The result is the new record's summary.
glob notes edit <id> accepts the same options. It changes only fields you supply. --title "" or --body "" clears that field. A nonempty --tag list replaces all existing tags; it does not add to them. Omitting --tag keeps the tags. An empty tag list does not clear them.
An edit needs at least one supplied title, body or nonempty tag list. With none, it reports provide at least one of --title/--body/--tag. Its JSON result includes the full record details.
These commands accept literal strings as arguments. There is no --file, --editor or stdin body option. Supply longer text through your shell when you need more than the TUI input line can enter.
Archive or delete
glob notes archive "$record_id"
glob notes delete "$record_id" --yes
notes archive <id> changes the record's status to archived. Ordinary note, task and search listings select active records, so the archived record disappears from those lists. You can still inspect it with notes show <id>. The CLI has no unarchive command.
notes delete <id> --yes deletes the selected record. The command requires --yes and describes deletion as irreversible. Without it, it returns CONFIRMATION_REQUIRED with exit 2. Check the record with notes show before confirming. The CLI has no restore command.
Archive and delete also accept IDs of task records. Their JSON results are respectively { "id": "…", "status": "archived" } and { "id": "…", "deleted": "true" } inside the normal result envelope. The deleted value is a string.
Tasks
glob tasks add "Reserve train tickets" --tag travel
glob tasks list
glob tasks list --all --limit 30 --json
glob tasks done "$record_id"
glob tasks reopen "$record_id"
glob tasks defaults to glob tasks list.
| Command | Additional options | Behaviour |
|---|---|---|
tasks list |
--limit <number>; default 100 |
Lists active, unfinished tasks. |
tasks list |
--all |
Includes completed tasks. Archived records remain excluded. |
tasks add <title> |
--tag <tags> |
Creates a task with the supplied title. |
tasks done <id> |
None | Marks the record as a task and completed. |
tasks reopen <id> |
None | Marks the record as a task and unfinished. |
Human task rows use [ ] and [x]. Task lists preserve newest-first creation order; --all does not group unfinished tasks ahead of completed ones. The command examines the newest 1,000 active records before selecting tasks, so a large store can have older tasks outside that window.
Task creation and completion commands return record summaries in JSON. To change a task's title, body or tags, use glob notes edit <id>.
tasks done and tasks reopen do not first require the selected record to be a task. Check the ID before running them on a note. There is no task scheduling or due-date flag in these commands.
Search
glob search "train" --limit 10
glob notes search "train ticket" --json
glob search <query> and glob notes search <query> run the same search across active records, including tasks. Both accept --limit <number> with default 50, plus the shared options. They return record summaries, ordered by creation time rather than relevance.
Search checks titles, bodies and tags. Matching differs by platform:
- Linux splits the query into words and numbers, matches each as a word prefix, and requires all of them.
train tickcan match text containing “train tickets”. Punctuation does not act as a search operator. A query consisting only of punctuation produces an unfiltered active-record listing. - macOS looks for the whole query as a case-insensitive substring in a title, body or individual tag. A word fragment can match inside a longer word.
Use a full ID with notes show when you need to distinguish a search difference from a missing record. Searching does not include archived records.
Links
glob link create "$source_id" "$target_id" --label relates
glob link list "$source_id" --json
glob link create <source> <target> creates a directed link from the first record to the second. --label <text> is optional and defaults to an empty label. Both records must exist. Its JSON result contains id, source, target and label.
glob link list <id> lists links in either direction involving that record. Each result contains those same four fields. It reports IDs and labels, without fetching the other record's title. An empty list is displayed as links none.
glob link requires create or list; it has no default action. There is no link edit or unlink command on this surface.
Common failures
| Message or code | What to do |
|---|---|
INVALID_ARGUMENT: is not a valid UUID |
Supply the full UUID, not the shortened display ID. |
NOT_FOUND: No record with id … |
Check the ID and selected store. |
NOT_FOUND: source or target record not found |
Check both ends of a link with notes show. |
provide --title and/or --body |
Give notes new some content. |
CONFIRMATION_REQUIRED |
Inspect the record, then add --yes if you intend to delete it. |
STORE_UNAVAILABLE |
Check the directory and store troubleshooting. |
See output and exit codes for the exact record fields and scripting rules.
