Skip to main content

CLI Reference

Install and use the linkdown Rust CLI to upload and share decks from your terminal.

Installation

The CLI is a Rust binary. It is not published to npm, crates.io, or Homebrew — install it with the official installer, or build from source:

curlcurl -fsSL https://lnkdwn.com/install.sh | sh
sourcecargo install --path apps/cli
clonegit clone https://github.com/0451-software/linkdown && cd linkdown/apps/cli && cargo build --release

Verify: linkdown --version

Authentication

Run linkdown login to authenticate via your browser (OAuth2 device flow). The token is stored in your OS keyring (macOS Keychain, Linux Secret Service, Windows Credential Manager).

Non-secret configuration (default deck name, output format) lives in ~/.config/linkdown/config.toml. You can override the config directory location with the global --config <path> flag.

Commands

linkdown login

Authenticate via your browser using the OAuth2 device flow (RFC 8628).

Example

linkdown login
linkdown logout

Clear the stored credential from your OS keyring.

Example

linkdown logout
linkdown whoami

Show the authenticated user, tier, storage usage, and deck count.

Example

linkdown whoami
linkdown create [PATH]

Detect the slide framework in PATH (default: current directory), build it, zip the output, and upload it as a new deck. Supports --name, --framework (slidev|marp|revealjs), --build-cmd, and --skip-upload.

Example

linkdown create ./my-deck
linkdown update [PATH]

Re-upload an existing deck. Accepts the same --name, --framework, and --build-cmd flags as create. (Currently implemented as delete + recreate.)

Example

linkdown update .
linkdown list

List all decks owned by the authenticated user.

Example

linkdown list
linkdown delete <name>

Delete a deck by its display name. Prompts for confirmation unless --force is passed.

Example

linkdown delete my-deck
linkdown share <name>

Generate a share link for an existing deck. --expiry accepts 7d, 30d, or 90d. --password adds password protection.

Example

linkdown share my-deck --expiry 30d --password secret
linkdown unshare <name>

Revoke all share links for the named deck.

Example

linkdown unshare my-deck
linkdown set-default <name>

Save a deck name as the default for `create` when --name is omitted.

Example

linkdown set-default my-deck

Configuration

The CLI does not read any environment variables. The API host (https://api.lnkdwn.com) is hardcoded in the binary. The only CLI-level override is --config <path>, which moves the location of config.toml.

Defaults in config.toml

  • defaults.framework"auto" (or slidev | marp | revealjs)
  • defaults.output_format"url" (or json | quiet)
  • defaults.default_expiry"never" (or 7d | 30d | 90d)
  • defaults.default_deck — optional, set via linkdown set-default

Supported Frameworks

The CLI auto-detects the framework from your project. Pass --framework to override, or --build-cmd to run a custom build.

Slidev

Auto-detected from package.json with "slidev" in scripts or dependencies. Built with `slidev build`.

Marp

Auto-detected from `@marp-team/marp-cli` in package.json, a `.marp/` config, or `_mp*.md` files. Built with `marp`.

Reveal.js

Auto-detected from an `index.html` containing a reveal.js script tag. Provide a build command via --build-cmd.

Unknown

Pass --framework to override detection, or --build-cmd to run a custom build.

Ready to share your first deck?

Install the CLI and share in under a minute.

Go to Dashboard