Agent-friendly CLI for Outline page (document) and collection CRUD operations.
This project talks directly to Outline's RPC API (/api/documents.*, /api/collections.*) and is designed for automation and AI-agent workflows.
login/logoutandauth status/auth whoamicommandspage get,list,create,updatepage append,prependpage move,archive,delete,restorepage search,find(title search)collection get,list,create,update,delete- JSON output for scripting (
--json) .envcompatibility withOUTLINE_BASE_URL/OUTLINE_API_KEY
bun install
bun run buildQuick install (detects amd64/arm64 and installs latest release binary):
curl -fsSL https://raw.githubusercontent.com/pirabyte/outline-cli/main/install.sh | bashInstall a specific version:
curl -fsSL https://raw.githubusercontent.com/pirabyte/outline-cli/main/install.sh | bash -s -- --version v0.1.1Install system-wide (may require sudo):
curl -fsSL https://raw.githubusercontent.com/pirabyte/outline-cli/main/install.sh | bash -s -- --systemIf you plan to use file-based credential storage (no keychain deps needed):
curl -fsSL https://raw.githubusercontent.com/pirabyte/outline-cli/main/install.sh | bash -s -- --credential-store fileNotes:
- The installer targets Debian/Ubuntu Linux
- It verifies release checksums by default (
SHA256SUMS.txt) - It checks and installs missing runtime dependencies (
libsecret-1-0,dbus-user-session,dbus-bin,gnome-keyring) by default - Use
--credential-store fileto skip keychain dependency setup arm64is detected, and install requires a publishedoutline-linux-arm64.tar.gzasset
Run:
OUTLINE_BASE_URL="https://your-outline.example.com" \
OUTLINE_API_KEY="..." \
node dist/cli.js page list --limit 5 --jsonInteractive login (stores credentials for future commands):
node dist/cli.js login
node dist/cli.js page list --limit 5 --json
node dist/cli.js auth status --verify --json
node dist/cli.js auth whoami --json
node dist/cli.js logoutIf using a local .env file:
set -a; source .env; set +a
node dist/cli.js page list --limit 5 --jsonnode dist/cli.js --helpExamples:
node dist/cli.js login
node dist/cli.js login --store file
node dist/cli.js login --base-url https://your-outline.example.com --api-key "..." --skip-verify
node dist/cli.js auth status
node dist/cli.js auth whoami --json
node dist/cli.js logout --json
node dist/cli.js page get <id> --json
node dist/cli.js page create --title "Draft" --text "Hello" --json
node dist/cli.js page append <id> --stdin --json
node dist/cli.js page delete <id> --json
node dist/cli.js collection list --limit 10 --json
node dist/cli.js collection create --name "Engineering Docs" --description "Team knowledge" --jsonCommands resolve credentials in this order:
- CLI flags (
--base-url,--api-key) - Environment variables (
OUTLINE_BASE_URL/OUTLINE_API_KEY) - Stored credentials from
outline login
Re-run outline login to rotate/update stored credentials.
Run outline logout to clear stored credentials.
Use outline login --store auto|keychain|file to choose where credentials are stored.
- API keys are stored in the OS keychain (via
keytar) - You can opt into local file storage (
--store file) when keychain is unavailable - Base URL metadata is stored in the user config directory
--profileis still reserved and not implementedauth statusinspects credential source presence and can verify with--verifyauth whoamicalls Outlineauth.infousing resolved credentials
This repo includes GitHub Actions workflows for:
- CI (
.github/workflows/ci.yml) - tagged releases with cross-platform binaries (
.github/workflows/release.yml) - optional Homebrew tap formula updates (same release workflow, if secrets are configured)
- Push a tag like
v0.1.0 - GitHub Actions builds binaries for configured OS/arch targets
- Artifacts are attached to the GitHub Release
- Checksums are generated
- (Optional) Homebrew tap formula is updated and pushed
After release automation is configured:
brew tap pirabyte/outline-cli
brew install outline-cliHOMEBREW_TAP_PAT: token with push access to the tap repo
Expected tap repo:
pirabyte/homebrew-outline-cli
- dotenv auto-loading
- stronger append/prepend semantics for drafts
- profile support
- tests with mocked Outline API responses