Desktop / Command Line

Folders, Links, Tasks, and Tags

Complete CLI reference for folder operations, wikilink inspection, workspace tasks, and tags.

Folder Commands

Folder paths are relative to the selected workspace. Folder moves and renames update every link to the notes inside the folder.

folder create

Create a folder and any required parents.

octarine folder create Projects/Launch
╭───────┬─────────────────╮
│ Field ┆ Value           │
╞═══════╪═════════════════╡
│ path  ┆ Projects/Launch │
╰───────┴─────────────────╯

folder list

List every folder, or scope results to one subtree.

octarine folder list
octarine folder list Projects
# All folders
╭──────────────────╮
│ Value            │
╞══════════════════╡
│ Archive          │
│ Projects         │
│ Projects/Launch  │
╰──────────────────╯

# Projects subtree
╭──────────────────╮
│ Value            │
╞══════════════════╡
│ Projects         │
│ Projects/Launch  │
╰──────────────────╯

folder move

Move a folder and rewrite links to every note inside it. Preview the operation with --dry-run.

octarine folder move Drafts/Launch Projects/Launch --dry-run
octarine folder move Drafts/Launch Projects/Launch
# Dry run
╭──────────────┬─────────────────╮
│ Field        ┆ Value           │
╞══════════════╪═════════════════╡
│ dryRun       ┆ true            │
│ from         ┆ Drafts/Launch   │
│ linksUpdated ┆ 1               │
│ to           ┆ Projects/Launch │
│ updated      ┆ Home.md         │
╰──────────────┴─────────────────╯

# Move
╭──────────────┬─────────────────╮
│ Field        ┆ Value           │
╞══════════════╪═════════════════╡
│ dryRun       ┆ false           │
│ from         ┆ Drafts/Launch   │
│ linksUpdated ┆ 1               │
│ to           ┆ Projects/Launch │
│ updated      ┆ Home.md         │
╰──────────────┴─────────────────╯

folder rename

rename has the same behavior and syntax as move, but communicates that the destination is a new name.

Both commands rewrite the same link forms as note rename: path and unique-name wikilinks, embeds, #heading and |alias suffixes, frontmatter links, and relative Markdown links. Links inside code are left alone.

octarine folder rename Projects/Launch Projects/Release --dry-run
octarine folder rename Projects/Launch Projects/Release
# Dry run
╭──────────────┬──────────────────╮
│ Field        ┆ Value            │
╞══════════════╪══════════════════╡
│ dryRun       ┆ true             │
│ from         ┆ Projects/Launch  │
│ linksUpdated ┆ 1                │
│ to           ┆ Projects/Release │
│ updated      ┆ Home.md          │
╰──────────────┴──────────────────╯

# Rename
╭──────────────┬──────────────────╮
│ Field        ┆ Value            │
╞══════════════╪══════════════════╡
│ dryRun       ┆ false            │
│ from         ┆ Projects/Launch  │
│ linksUpdated ┆ 1                │
│ to           ┆ Projects/Release │
│ updated      ┆ Home.md          │
╰──────────────┴──────────────────╯

folder duplicate

Copy a complete folder. Omit the destination to use a generated copy path; --unique prevents collisions.

octarine folder duplicate Projects/Template Projects/New-project
octarine folder duplicate Projects/Template --unique
# Exact destination
Projects/New-project

# Generated unique destination
Projects/Template copy

folder trash

Move a folder to the operating system trash. The protected .octarine folder cannot be trashed this way.

octarine folder trash Archive/Obsolete
╭─────────┬──────────────────╮
│ Field   ┆ Value            │
╞═════════╪══════════════════╡
│ trashed ┆ Archive/Obsolete │
╰─────────┴──────────────────╯

folder config get

Read one folder's configuration. SQLite is preferred for a registered workspace, with .octarine/folder-config.json as the portable fallback.

octarine folder config get Projects
octarine folder config get Projects --json
# Table output
╭────────┬─────────────────╮
│ Field  ┆ Value           │
╞════════╪═════════════════╡
│ config ┆ {"sort":"name"} │
│ path   ┆ Projects        │
╰────────┴─────────────────╯

# JSON output
{"schemaVersion":1,"ok":true,"data":{"path":"Projects","config":{"sort":"name"}},"meta":{"truncated":false}}

folder config set

Replace one folder's configuration from a JSON or YAML object. Use --file - for standard input.

octarine folder config set Projects --file folder-config.yaml
printf '{"sort":"name"}' | octarine folder config set Projects --file -
╭─────────┬──────────╮
│ Field   ┆ Value    │
╞═════════╪══════════╡
│ path    ┆ Projects │
│ updated ┆ true     │
╰─────────┴──────────╯

The portable file and compatible SQLite row are updated together.

Link commands read wikilinks, embeds, frontmatter links, and relative Markdown links, and resolve each one to a note the same way the desktop app does: paths are case-insensitive, and a bare note name resolves when exactly one note has that name. Links inside code are ignored.

Each link result includes:

FieldMeaning
sourceNote containing the link
lineOne-based line number
kindwiki or markdown (mention for link mentions)
targetLink target as written, without its heading or alias
fragment#heading part of the link, when present
resolvedWorkspace path the link points to, or null when unresolved

List all links, or links originating in one note.

octarine link list
octarine link list Home.md --json
# All links
╭──────────┬──────┬────────────────────┬────────────┬────────────────────┬──────────╮
│ kind     ┆ line ┆ resolved           ┆ source     ┆ target             ┆ fragment │
╞══════════╪══════╪════════════════════╪════════════╪════════════════════╪══════════╡
│ wiki     ┆ 3    ┆ —                  ┆ Ideas.md   ┆ Release checklist  ┆ —        │
│ wiki     ┆ 3    ┆ Projects/Launch.md ┆ Home.md    ┆ Projects/Launch    ┆ Goals    │
│ wiki     ┆ 3    ┆ Roadmap.md         ┆ Home.md    ┆ Roadmap            ┆ —        │
│ markdown ┆ 3    ┆ Projects/Launch.md ┆ Roadmap.md ┆ Projects/Launch.md ┆ —        │
╰──────────┴──────┴────────────────────┴────────────┴────────────────────┴──────────╯

# Links from one note (JSON)
{"schemaVersion":1,"ok":true,"data":[{"source":"Home.md","line":3,"kind":"wiki","target":"Projects/Launch","fragment":"Goals","resolved":"Projects/Launch.md"},{"source":"Home.md","line":3,"kind":"wiki","target":"Roadmap","resolved":"Roadmap.md"}],"meta":{"truncated":false}}

Find links that resolve to a note, whatever form they are written in.

octarine link backlinks Projects/Launch.md
╭──────────┬──────┬────────────────────┬────────────┬────────────────────┬──────────╮
│ kind     ┆ line ┆ resolved           ┆ source     ┆ target             ┆ fragment │
╞══════════╪══════╪════════════════════╪════════════╪════════════════════╪══════════╡
│ wiki     ┆ 3    ┆ Projects/Launch.md ┆ Home.md    ┆ Projects/Launch    ┆ Goals    │
│ markdown ┆ 3    ┆ Projects/Launch.md ┆ Roadmap.md ┆ Projects/Launch.md ┆ —        │
╰──────────┴──────┴────────────────────┴────────────┴────────────────────┴──────────╯

Rewrite every link that resolves to one note so it points to another.

octarine link replace Projects/Launch Projects/Release
╭──────────────┬─────────────────────╮
│ Field        ┆ Value               │
╞══════════════╪═════════════════════╡
│ dryRun       ┆ false               │
│ from         ┆ Projects/Launch     │
│ linksUpdated ┆ 2                   │
│ to           ┆ Projects/Release    │
│ updated      ┆ Home.md, Roadmap.md │
╰──────────────┴─────────────────────╯

List links whose target cannot be resolved. link broken is an alias.

octarine link unresolved
octarine link broken --json
# Table output
╭──────┬──────┬──────────┬──────────┬───────────────────╮
│ kind ┆ line ┆ resolved ┆ source   ┆ target            │
╞══════╪══════╪══════════╪══════════╪═══════════════════╡
│ wiki ┆ 3    ┆ —        ┆ Ideas.md ┆ Release checklist │
╰──────┴──────┴──────────┴──────────┴───────────────────╯

# JSON output
{"schemaVersion":1,"ok":true,"data":[{"source":"Ideas.md","line":3,"kind":"wiki","target":"Release checklist","resolved":null}],"meta":{"truncated":false}}

List notes with no incoming links.

octarine link orphans
╭───────────────────╮
│ Value             │
╞═══════════════════╡
│ Scratch/Ideas.md  │
╰───────────────────╯

List notes with no outgoing links.

octarine link deadends
╭──────────────────────────╮
│ Value                    │
╞══════════════════════════╡
│ Projects/Release-notes.md│
╰──────────────────────────╯

Find plain-text mentions of a name that are not links. resolved is set when a note with that name exists.

octarine link mentions "Launch plan"
╭─────────┬──────┬──────────┬────────────┬─────────────╮
│ kind    ┆ line ┆ resolved ┆ source     ┆ target      │
╞═════════╪══════╪══════════╪════════════╪═════════════╡
│ mention ┆ 9    ┆ —        ┆ Roadmap.md ┆ Launch plan │
╰─────────┴──────┴──────────┴────────────┴─────────────╯

Workspace Tasks

task list

List Markdown tasks across all notes. Filter by folder or completion state; --done and --todo are mutually exclusive.

octarine task list
octarine task list --folder Projects --todo
octarine task list --done --json
# All workspace tasks
╭─────────┬────┬──────┬────────────────────┬─────────────────────╮
│ checked ┆ id ┆ line ┆ path               ┆ text                │
╞═════════╪════╪══════╪════════════════════╪═════════════════════╡
│ false   ┆ 12 ┆ 12   ┆ Projects/Launch.md ┆ Announce release    │
│ true    ┆ 13 ┆ 13   ┆ Projects/Launch.md ┆ Prepare screenshots │
╰─────────┴────┴──────┴────────────────────┴─────────────────────╯

# Open tasks below Projects
╭─────────┬────┬──────┬────────────────────┬──────────────────╮
│ checked ┆ id ┆ line ┆ path               ┆ text             │
╞═════════╪════╪══════╪════════════════════╪══════════════════╡
│ false   ┆ 12 ┆ 12   ┆ Projects/Launch.md ┆ Announce release │
╰─────────┴────┴──────┴────────────────────┴──────────────────╯

# Completed tasks (JSON)
{"schemaVersion":1,"ok":true,"data":[{"path":"Projects/Launch.md","id":13,"line":13,"checked":true,"text":"Prepare screenshots"}],"meta":{"truncated":false}}

Use note task set to change an individual task.

Workspace Tags

tag list

List tags with occurrence counts. Sort by descending count when auditing common tags.

octarine tag list
octarine tag list --sort-count --json
# Table output
╭───────┬──────────╮
│ count ┆ tag      │
╞═══════╪══════════╡
│ 3     ┆ #launch  │
│ 5     ┆ #project │
╰───────┴──────────╯

# Count-sorted JSON output
{"schemaVersion":1,"ok":true,"data":[{"tag":"#project","count":5},{"tag":"#launch","count":3}],"meta":{"truncated":false}}