passage.md

Passage CLI

Hosted Markdown from your terminal.

Use `passage` to let humans and agents create, read, and update the same private Markdown documents that live in the browser.

Install

Install the CLI in one command

macOS or Linux

The installer downloads the latest release, verifies the checksum, and puts `passage` on your PATH.

curl -fsSL https://raw.githubusercontent.com/owainlewis/passage-cli/main/install.sh | bash
passage version

Manual downloads

Download archives and checksums from GitHub releases when you want to install by hand.

# Latest release
https://github.com/owainlewis/passage-cli/releases/latest

Auth

Create an API token in the browser

  1. Open the account menu in the Passage editor while signed in.
  2. Create an API token with a name like `Laptop` or `Agent runner`.
  3. Copy the token when it appears. Passage only shows the plaintext once.
  4. Run `passage login` and paste the token.
  5. Revoke old tokens from the same account menu when you are done with them.
passage login
passage auth status --check

Commands

First commands for humans and agents

passage loginSave your Passage origin and API token.
passage auth status --checkConfirm the saved token works.
passage new "Draft"Create a hosted Markdown document.
passage listList your active documents.
passage cat <doc-id>Print Markdown to stdout.
passage pull <doc-id>Alias for reading a document body.
passage push <doc-id> ./draft.mdReplace a document from a file.
passage append <doc-id> ./notes.mdAppend file content.
passage replace <doc-id> ./draft.mdReplace a document from a file.
passage new "Research notes"
passage list
passage cat <doc-id>
passage replace <doc-id> ./notes.md
passage list --json

Agent loop

Use clean Markdown as context

Share a document when another person needs the page URL. Use raw `.md` URLs or CLI output when an agent needs the Markdown body. API tokens authenticate private document commands, while public raw links stay read-only and explicit.

# Share returns htmlPath and markdownPath
/d/<share-token>.md

# Unshare revokes both URLs