Skip to content

Commands

Stable

Generated from capsule-cli/cli-surface.json, the committed command tree capsule-cli emits and mise run cli-surface-check keeps current. To change a description on this page, change the clap annotation it comes from and regenerate — this file is build output.

capsule <COMMAND>

Capsule CLI provides tools for managing your photos and albums:

  • Authentication management
  • Sync local and remote data
  • Check status and list files
  • Manage albums and collections
CommandDescription
capsule authAuthentication commands
capsule cullReview a local library: flag assets, filter by flag, sweep rejects to trash
capsule demoRun the offline end-to-end data-plane showcase (real cryptography, no network)
capsule importImport files into a local Capsule library
capsule libraryManage the local library
capsule listList the assets the sync feed has delivered
capsule matchMatch metadata for current file
capsule pushUpload a local Capsule library to the server
capsule repairRepair a local library in place, one signed correction per affected asset
capsule resetReset all local CLI data
capsule showShow what an imported asset’s signed sidecar records: caption, rating, tags, GPS, timestamps
capsule statusShow current status
capsule syncSync local and remote data
capsule auth <COMMAND>

Authentication commands

CommandDescription
capsule auth loginLogin to Capsule
capsule auth logoutLogout from Capsule
capsule auth registerCreate a Capsule account and sign in
capsule auth statusShow authentication status
capsule auth login [OPTIONS]

Login to Capsule

OptionDescription
--email <EMAIL>Account email (prompted when omitted).
--password-stdinRead the password from stdin instead of prompting, so the command works in scripts and CI where there is no terminal.
capsule auth logout

Logout from Capsule

capsule auth register [OPTIONS]

Create a Capsule account and sign in

OptionDescription
--email <EMAIL>Account email (prompted when omitted).
--password-stdinRead the password from stdin instead of prompting, so the command works in scripts and CI where there is no terminal.
capsule auth status

Show authentication status

capsule cull --library <PATH> [OPTIONS]

Review a local library: flag assets, filter by flag, sweep rejects to trash

OptionDescription
--library <PATH>Required. Path to the Capsule library.
--passphrase-stdinRead the library passphrase from stdin instead of prompting, so culling works in scripts and CI where there is no terminal.
--pick <ASSET_ID>Flag an asset as a keeper (repeatable).
--neutral <ASSET_ID>Clear an asset’s flag back to the never-flagged default (repeatable).
--reject <ASSET_ID>Flag an asset for rejection (repeatable).
--filter <FLAG>List the assets carrying one flag instead of only counting them. Values: pick, neutral, reject.
--sweepMove every rejected asset to trash. The only destructive step, and soft per retention — swept assets stay restorable until the window elapses.
--retain-days <DAYS>Retention window, in days, the sweep’s soft delete stamps. Default: 30.
capsule demo [OPTIONS]

Run the offline end-to-end data-plane showcase (real cryptography, no network)

OptionDescription
--workdir <PATH>Working directory for the demo libraries (a temp dir is used if omitted).
--image <PATH>A real image/file to import (a small synthetic file is used if omitted).
capsule import <PATH>... --library <PATH> [OPTIONS]

Import files into a local Capsule library

ArgumentDescription
<PATH>...Required. Source file or directory to import. Repeatable: a split Takeout export extracted into several folders is imported by naming every part in one run, so a media file and a sidecar that landed in different parts are still paired.
OptionDescription
--provider <PROVIDER>Read the source as an export from this service instead of as a plain directory tree, so its out-of-band metadata (capture time, GPS, captions, favorites, album membership) is folded into the imported assets. Values: takeout.
--library <PATH>Required. Path to the Capsule library.
--moveMove files instead of copying them.
--forceRe-import files even if they already exist (duplicate override).
--passphrase-stdinRead the library passphrase from stdin instead of prompting, so imports work in scripts and CI where there is no terminal.
--pushPush the library to the server after importing — sugar for a capsule push run over the same library. The import itself stays offline.
--stagedStage the follow-on push (--push) in tier order, gating the preview and original tiers on the connection class.
capsule library <COMMAND>

Manage the local library

CommandDescription
capsule library infoShow library information
capsule library initCreate a new Capsule library
capsule library rebuildRebuild the SQLite index from sidecar files
capsule library info <PATH>

Show library information

ArgumentDescription
<PATH>Required. Path to the library.
capsule library init <PATH> [OPTIONS]

Create a new Capsule library

ArgumentDescription
<PATH>Required. Directory for the new library.
OptionDescription
--name <NAME>Human-readable library name. Default: My Library.
capsule library rebuild <PATH>

Rebuild the SQLite index from sidecar files

ArgumentDescription
<PATH>Required. Path to the library.
capsule list [OPTIONS]

List the assets the sync feed has delivered

OptionDescription
--include-deletedInclude assets the server has tombstoned (deleted) as well as live ones.
capsule match <PATH>

Match metadata for current file

ArgumentDescription
<PATH>Required. Path to the file to match metadata for.
capsule push --library <PATH> [OPTIONS]

Upload a local Capsule library to the server

OptionDescription
--library <PATH>Required. Path to the Capsule library to push.
--passphrase-stdinRead the library passphrase from stdin instead of prompting, so pushes work in scripts and CI where there is no terminal.
--dry-runReport what would be uploaded without opening a single upload session.
--forceRe-drive every blob regardless of what the server already holds.
--stagedOpen the tier sessions in ladder order (index → preview → original), gating the above-index tiers on the connection class, instead of opening all eagerly.
capsule repair <COMMAND>

Repair a local library in place, one signed correction per affected asset

CommandDescription
capsule repair capture-timeRe-read each original’s EXIF capture time and report every asset whose signed capture timestamp disagrees with it; with —apply, correct each one as a signed metadata update
capsule repair capture-time --library <PATH> [OPTIONS]

Re-read each original’s EXIF capture time and report every asset whose signed capture timestamp disagrees with it; with —apply, correct each one as a signed metadata update

OptionDescription
--library <PATH>Required. Path to the Capsule library.
--passphrase-stdinRead the library passphrase from stdin instead of prompting, so the command works in scripts and CI where there is no terminal.
--applyWrite the corrections. Without this flag the pass only reports what it would change; each correction is an irreversible signed record on the asset’s chain.
--limit <COUNT>Correct at most this many affected assets in one —apply run (the report still covers the whole library).
capsule reset [OPTIONS]

Reset all local CLI data

OptionDescription
--configReset configuration.
--dataReset data directory.
--cacheReset cache directory.
--allReset all data.
capsule show <ASSET> --library <PATH> [OPTIONS]

Show what an imported asset’s signed sidecar records: caption, rating, tags, GPS, timestamps

ArgumentDescription
<ASSET>Required. The asset to show: its id, or a prefix of at least 8 hex characters of its SHA-256 content hash — the same digest shasum -a 256 prints for the source file.
OptionDescription
--library <PATH>Required. Path to the Capsule library.
--passphrase-stdinRead the library passphrase from stdin instead of prompting, so the command works in scripts and CI where there is no terminal.
capsule status

Show current status

capsule sync [OPTIONS]

Sync local and remote data

OptionDescription
--forceDiscard the saved cursor and re-drain the feed from the start. The per-album anti-rewind floor still applies, so this cannot resurrect stale entries.
--dry-runPerform a dry run without making changes.