Skip to content

CLI

The Tusky CLI (@tuskydp/cli) provides command-line access to all Tusky operations — file management, vault operations, encryption, and the MCP server for AI agents.

Terminal window
npm install -g @tuskydp/cli

Verify the installation:

Terminal window
tusky --version

These flags apply to every command:

FlagDescriptionDefault
--api-key <key>Override API keystored config / TUSKYDP_API_KEY env
--api-url <url>Override API URLhttps://api.tusky.ai
--format <fmt>Output format: table, json, plaintable
--quietSuppress non-essential outputfalse
--verboseShow debug outputfalse
--no-colorDisable colored output

Configuration is stored in ~/.config/tuskydp/config.json.

Create a new account. Automatically creates and stores a CLI API key.

FlagDescription
--name <name>Display name for the account

Authenticate with Tusky. Three modes:

Terminal window
# With an existing API key
tusky login --api-key tdp_your_key
# With email and password (auto-creates an API key)
tusky login --email [email protected] --password your_password
FlagDescription
--api-key <key>Authenticate with an existing API key
--email <email>Email address
--password <password>Password

Clear stored credentials and encryption session.

Show current user, plan, and storage usage.

List all API keys in a table with name, prefix, scopes, last used, and created date.

Create a new API key. The full key is shown once — save it.

FlagDescription
--scopes <scopes>Comma-separated scopes
--vaults <vaults>Comma-separated vault IDs to restrict access
--expires <days>Auto-expire after N days

Revoke an API key by ID.

Create a new vault. Private (encrypted) by default.

FlagDescription
--publicCreate as a public vault (unencrypted, shareable)
--description <text>Vault description
Terminal window
tusky vault create "My Project"
tusky vault create "Shared Data" --public

List all vaults with name, slug, visibility, file count, size, and ID.

Show vault details. Accepts a vault ID, slug, or name.

Rename a vault. Accepts a vault ID, slug, or name.

Delete a vault. Prompts for confirmation unless --force is passed.

FlagDescription
--forceDelete the vault and all its files without confirmation

Set the default vault for uploads. When set, tusky upload uses this vault unless --vault is specified.

List files. Optionally filter by vault (ID, slug, or name).

FlagDescriptionDefault
--sort <field>Sort by name, size, or datedate
--status <status>Filter by status: hot, synced, cold, error
--limit <n>Max results50
-f, --followWatch mode — refresh every 3 seconds
Terminal window
tusky ls # All files
tusky ls my-vault --status hot # Hot files in a specific vault
tusky ls -f # Watch mode

Show file details — name, size, MIME type, status, Walrus blob ID, upload date.

Show sync status and Walrus blob ID for a file.

Retry failed Walrus sync. If no IDs are given, retries all files in error status.

Terminal window
tusky retry # Retry all errored files
tusky retry abc123 def456 # Retry specific files

Soft-delete one or more files (moves to trash). Prompts for confirmation unless --force is passed.

FlagDescription
--forceSkip confirmation prompt

Upload files to a vault. For private vaults, encryption is handled automatically.

FlagDescription
--vault <vault>Target vault (ID, slug, or name). Falls back to the default vault.
--recursiveUpload directory contents recursively
Terminal window
tusky upload photo.jpg --vault my-vault
tusky upload ./docs --vault my-vault --recursive
tusky upload file1.txt file2.txt

Download a file. For private vaults, decryption is handled automatically. Cold files are rehydrated from Walrus on demand (polls up to 60 seconds).

FlagDescription
--output <path>Output path (defaults to current directory + original filename)
Terminal window
tusky download abc123
tusky download abc123 --output ./downloads/myfile.pdf

Encryption is required for private vaults. See the encryption guide for details on the key hierarchy and security model.

Set your encryption passphrase for the first time. Generates a master key, wraps it with your passphrase, and displays a recovery key. Save the recovery key — it’s shown once.

Unlock encryption for the current session. Stores the master key in ~/.tusky/session.enc.

FlagDescription
--passphrase <passphrase>Passphrase (also reads TUSKYDP_PASSWORD env var). Prompts interactively if omitted.
Terminal window
tusky encryption unlock
tusky encryption unlock --passphrase "my passphrase"
TUSKYDP_PASSWORD="my passphrase" tusky encryption unlock

Show whether encryption is set up (server-side) and whether the session is unlocked (local).

Change your encryption passphrase. Re-wraps the master key — existing encrypted files remain accessible. Generates a new recovery key.

Recover your master key using the recovery key. Sets a new passphrase and generates a new recovery key.

Show account info — email, plan, storage usage, encryption status. Also runs when you type tusky account with no subcommand.

Show your current plan and available upgrades with pricing, storage limits, and max file sizes.

Show detailed storage usage breakdown per vault — name, visibility, file count, and size.

The MCP server lets AI agents call Tusky operations as tools. See the full MCP Server guide for setup and tool reference.

Start the MCP server using stdio transport (JSON-RPC over stdin/stdout). Designed to be launched by an AI agent, not run manually.

Write the MCP server configuration to your agent’s config file.

FlagDescriptionDefault
--target <target>Agent target: claude-code, claude-desktop, cursorclaude-code
--api-key <key>API key to embed in the configstored key
--api-url <url>API URL override

Tusky is designed so you can recover your data independently — without the Tusky API or platform. See the file lifecycle guide for context on how files move between storage tiers.

Export file metadata for disaster recovery. Produces a JSON manifest containing Walrus blob IDs, encryption metadata, and step-by-step recovery instructions.

FlagDescriptionDefault
-o, --output <path>Output file pathtusky-export.json
--vault <vaultId>Export only a specific vaultall vaults
Terminal window
tusky export
tusky export -o backup.json --vault abc123

The export manifest includes:

  • Every file’s Walrus blob ID and Sui object ID
  • Encryption metadata (wrapped keys, IVs, checksums)
  • Walrus network info and aggregator URL
  • Recovery instructions for fetching and decrypting files without Tusky

Decrypt a file that was downloaded from Walrus using your encryption passphrase. Three modes for resolving encryption metadata:

FlagDescription
-o, --output <path>Output path for the decrypted file
--export <path>Path to a tusky-export.json manifest (offline mode)
--file-id <id>Tusky file ID (online — fetches metadata from API)
--wrapped-key <key>Per-file wrapped key, base64 (manual mode)
--iv <iv>Per-file encryption IV, base64 (manual mode)
--checksum <sha256>Expected plaintext SHA-256 checksum, hex
--passphrase <passphrase>Encryption passphrase (also reads TUSKYDP_PASSWORD env)
Terminal window
# Offline with export manifest
tusky decrypt myfile.enc --export tusky-export.json -o myfile.txt
# Online, fetches metadata from API
tusky decrypt myfile.enc --file-id abc123 -o myfile.txt
# Manual keys
tusky decrypt myfile.enc --wrapped-key <b64> --iv <b64> -o myfile.txt

Download a file directly from the Walrus network by blob ID. Does not decrypt — the downloaded file will be encrypted if it came from a private vault.

FlagDescription
--output <path>Output file path (defaults to blob-<blobId> in current directory)
Terminal window
tusky rehydrate Bx7K9...abc --output myfile.enc

Launch a full-screen interactive terminal UI for browsing vaults, managing files, and authentication.