A command-line interface for managing your PigCloud storage.
PigCloud is end-to-end encrypted: files are encrypted on your device
before upload and decrypted locally after download. The server never sees
plaintext content, file names, or data keys. A familiar, Unix-style CLI lets you
upload, download, share, and organise files straight from your terminal.
Two-letter aliases, an interactive shell with tab-completion, and --json
output make common workflows fast and scriptable.
Because decryption happens client-side, commands like gr (grep) and
di (diff) can search and compare encrypted file contents, something
the server and web UI cannot do.
Linux and macOS:
curl -fsSL https://pigcloud.de/cli/install.sh | shWindows (PowerShell):
irm https://pigcloud.de/cli/install.ps1 | iexThe script downloads the right build for your platform, verifies its SHA-256, and installs pc and pigcloud.
Download the appropriate binary for your platform from the releases page.
Each release contains two binaries: pigcloud (full name) and pc (shorthand alias).
curl -sSL https://github.com/pigtech-de/pigcloud-cli/releases/latest/download/pigcloud-3.2.0-linux-amd64.tar.gz -o pigcloud.tar.gz
tar -xzf pigcloud.tar.gz
sudo install -m 755 pigcloud pc /usr/local/bin/# Download and extract
Invoke-WebRequest -Uri "https://github.com/pigtech-de/pigcloud-cli/releases/latest/download/pigcloud-3.2.0-windows-amd64.zip" -OutFile pigcloud.zip
Expand-Archive pigcloud.zip -DestinationPath "$env:LOCALAPPDATA\pigcloud"
# Add to PATH (current user, persistent)
$path = [Environment]::GetEnvironmentVariable("Path", "User")
if ($path -notlike "*$env:LOCALAPPDATA\pigcloud*") {
[Environment]::SetEnvironmentVariable("Path", "$path;$env:LOCALAPPDATA\pigcloud", "User")
}Restart your terminal after adding to PATH.
Requires Go 1.25 or later.
cd cli
make build# Authenticate: paste your API key when prompted
# (find it in the PigCloud web UI under Settings > API Keys)
pc login
# List files in the current directory
pc ls
# Upload a file
pc ul document.pdf /Documents/
# Upload from stdin
echo "Hello world" | pc ul - /hello.txt
# Download a file
pc dl /Documents/document.pdf ./
# Search file contents (sealed index by default)
pc gr "TODO"
# Diff between file versions
pc di /report.md 3 5
# Start an interactive shell session
pc shellAuthentication is API-key based. Run pc login and paste the key from
your PigCloud account settings. The key is stored locally in your config file
and sent as a header with every request over HTTPS. No OAuth flow or browser
redirect needed.
- Each account has one active API key. Generating a new key revokes the previous one.
- The key secret is hashed with Argon2id on the server; it cannot be recovered, only regenerated.
- On Linux/macOS the config file is written with mode
0600(owner-only). On Windows, standard user-directory ACLs apply. - Treat your config file like an SSH private key: don't share it or commit it to version control.
PigCloud uses end-to-end encryption (E2EE): the CLI encrypts files locally before upload and decrypts them locally after download. The server stores only ciphertext and never has access to plaintext content or data keys.
| Layer | Algorithm | Details |
|---|---|---|
| File content | XChaCha20-Poly1305 (libsodium) | Streamed in 1 MB chunks. Per-file random data key, nonce incremented per chunk. SHA-256 integrity check on decrypt. |
| Data key sealing | X25519 crypto_box_seal |
Each file's data key is sealed to the user's public key. Only the user's private key can unseal it. |
| File names | X25519 crypto_box_seal |
Each name is individually sealed. The server stores and returns opaque blobs; the CLI decrypts client-side. |
| Path resolution | BLAKE2b-256 path tokens | Client computes deterministic tokens for O(1) lookups without revealing directory structure. |
| Key pair | X25519 (Curve25519) | Generated at account setup. Private key encrypted with a password-derived key (Argon2id). |
| File sharing | Re-seal per recipient | Data key is unsealed with sender's private key, then re-sealed with recipient's public key. |
E2EE keys are set up on first login and cached locally. The private key remains
encrypted at rest and only decrypted in memory when needed. Use pc uk to
unlock keys for a session and pc lk to lock them again.
Commands that take paths distinguish between remote (cloud) and local (OS) paths:
- Remote paths are Unix-style and absolute (
/Documents/report.pdf) or relative to the current cloud working directory (report.pdf). Usepc wdto see it,pc cdto change it. - Local paths are your OS file system paths (
./downloads/,C:\Users\...). - In
ulanddl, the first argument is always the source and the second is the destination.ultakes local then remote;dltakes remote then local. - Use
-as the local path forulto read from stdin (remote path required).
Use pc as a shorthand for pigcloud. All commands have two-letter aliases.
The same tree is shown by pc hl at runtime.
COMMANDS
├── Authentication
│ ├── li, login Sign in from your browser [--api-key]
│ ├── lk, lock Lock encryption keys
│ ├── lo, logout Remove stored credentials
│ ├── uk, unlock Unlock encryption keys for this session [--stdin] [-t]
│ └── wh, whoami Show current user info
├── Navigation
│ ├── cd Change working directory
│ ├── fd, find Find files by name [-a] [-F] [-i] [--larger-than] [-n] [--newer-than] [--older-than] [-E] [--smaller-than] [-t]
│ ├── gr, grep Search file contents [-A] [-l] [-F] [-i] [-m] [-r] [-E]
│ ├── ls, list List files and directories [-a] [--larger-than] [-n] [-l] [--newer-than] [-o] [--older-than] [-R] [--smaller-than] [-S] [-t]
│ ├── tr, tree Display directory tree [-a] [-L] [-d]
│ └── wd, pwd Print working directory
├── File Operations
│ ├── cp, copy Copy a file or directory [-d]
│ ├── ct, cat Display file content [-n] [-t]
│ ├── di, diff Diff a file between versions [-l]
│ ├── dl, download Download a file or folder from cloud storage [-x] [--overwrite] [--skip-existing] [-z]
│ ├── fv, favorite Manage favorites
│ │ ├── add Add paths to favorites
│ │ ├── ls List all favorites
│ │ └── rm Remove paths from favorites
│ │
│ ├── hd, hide Hide or unhide files and folders
│ │ ├── add Hide files or folders
│ │ ├── ls List all hidden items
│ │ └── rm Unhide files or folders
│ │
│ ├── mk, mkdir Create a new directory [-p]
│ ├── mn, mount Mount cloud storage as a local drive
│ │ ├── clean Remove rejected (unsyncable) files from mount
│ │ ├── conflicts List files changed both locally and remotely
│ │ ├── files Show per-file sync status [--issues] [--tree]
│ │ ├── mv Move the sync folder to a different location [-d] [-f]
│ │ ├── pin Pin a file or folder for offline access [--list] [--remove]
│ │ ├── resolve Settle a sync conflict [-f] [-k]
│ │ ├── start Start the mount daemon [--cache-size] [--poll-interval] [--read-only] [--virtual]
│ │ ├── status Show mount status and cache statistics
│ │ └── stop Stop a mount daemon and unmount [-a]
│ │
│ ├── mv, move Move or rename a file/directory [-d]
│ ├── rm, remove Delete files or directories [-d] [-f] [-p]
│ ├── rs, restore Restore an item from the recycling bin
│ ├── tb, trash Manage recycling bin [-S] [-t]
│ │ ├── empty Permanently delete all items in the recycling bin [-f]
│ │ └── ls List recycling bin contents
│ │
│ ├── tc, touch Create a new text file [-c]
│ ├── ul, upload Upload a file or directory to cloud storage [-f] [-j] [--preserve-timestamps] [--skip-existing]
│ └── vh, versions View and manage file version history
│ ├── dl Download a specific version
│ ├── prune Delete all but the last N versions [-k]
│ ├── rm Delete a specific version [-f]
│ └── rs Restore a file to a specific version
├── Sharing
│ ├── ch, chat Send and receive E2EE chat messages [--before-id] [-n]
│ │ ├── ls List conversations
│ │ ├── read Mark conversation as read
│ │ ├── rm Delete a sent message
│ │ ├── send Send a chat message or share a file [-f]
│ │ └── unread Show unread message counts
│ │
│ ├── fr, friend Manage friends
│ │ ├── accept Accept a friend request
│ │ ├── add Send a friend request
│ │ ├── decline Decline a friend request
│ │ ├── ls List your friends
│ │ ├── pending List pending friend requests
│ │ └── rm Remove a friend
│ │
│ ├── pl, link Create and manage public links
│ │ ├── add Create a public link [-e] [--max-downloads] [-P] [--qr]
│ │ ├── ls List all public links
│ │ ├── rm Revoke a public link [-f]
│ │ └── set Update public link settings [-e] [--max-downloads] [-P] [--remove-expiration] [--remove-max-downloads] [--remove-password]
│ │
│ └── sr, share Manage shared files and folders
│ ├── accept Accept a pending share
│ ├── add Share a folder with a user [-f] [-p]
│ ├── decline Decline a received share
│ ├── inbox List shares you've received from others
│ ├── ls List share recipients for a folder
│ ├── rm Remove a specific share recipient [-f]
│ └── set Update share settings (permission, password, expiry) [-e] [-P] [-p] [--remove-expiration] [--remove-password] [-u]
└── Info & Tools
├── ac, activity View activity log and notifications [-f] [-n] [-m] [-o] [--since] [-t] [-u] [--until]
├── ak, apikeys View or revoke your API key
│ ├── ls Show API key status
│ └── revoke Revoke the API key (logs this CLI out) [-f]
│
├── cf, config Manage CLI configuration
│ ├── get Get a configuration value
│ ├── ls Show all configuration values
│ └── set Set a configuration value
│
├── cm, completion Generate shell completion scripts
├── dr, doctor Diagnose the CLI setup
├── du, usage Show storage breakdown by file type
├── hi, welcome Quickstart tour for the PigCloud CLI
├── hl, help Show help for commands [-v]
├── in, info Show file or directory info
├── op, open Open a file or folder in the browser
├── rc, recents List recently accessed files [-n]
├── sh, shell Start an interactive shell
├── ss, sessions Manage active sessions and devices
│ ├── devices List trusted devices
│ ├── forget Remove a trusted device
│ ├── ls List active sessions and devices
│ ├── revoke Revoke an active session
│ └── revoke-all Revoke all other sessions
│
├── st, stats Show storage statistics
├── vf, verify Verify file signatures [-n]
├── vr, version Show version information
└── xp, export Export all personal data [-o]
GLOBAL FLAGS
--config Use custom config file path
--json Output in JSON format
--no-color Disable colored output
-q, --quiet Suppress non-essential output
--version Show version
Run pc hl <command> for detailed help on any command (flags, examples, related commands).
Sign in to PigCloud.
By default 'pc login' opens your browser and asks you to approve this device, so there is no API key to copy. Approve it while signed in to the web app and the CLI finishes on its own.
For CI or headless machines, pass an API key instead: pc login --api-key # or pipe it: echo "" | pc login Generate the key in the web app under Settings > API access.
pc login # Approve this device in your browserStop the background key agent and clear decrypted keys from memory.
After locking, commands that access encrypted files will prompt for your password again (or require 'pc uk' to unlock).
pc lk # Lock encryption keysRemove stored API key and configuration from your system.
This will delete your local configuration file and require you to login again.
Unlock your encryption keys so subsequent commands don't prompt for a password.
Starts a background agent that holds your decrypted keys in memory. The agent automatically expires after the TTL (default: 1 hour).
Use 'pc lk' to lock (stop the agent) manually.
pc uk # Unlock for 1 hour (default)
pc uk -t 8h # Unlock for 8 hours
pc uk -t 30m # Unlock for 30 minutesDisplay information about the currently authenticated user.
Change the current working directory in your cloud storage.
The working directory is persisted across CLI sessions. Use '..' to go up one directory, or '/' to go to root.
Search for files and directories matching a pattern.
By default the pattern uses glob matching:
- matches any characters ? matches a single character
Use -E for regex matching or -F for literal substring matching.
pc fd "*.pdf" # Glob: find PDF files
pc fd "report*" /docs # Glob: search in /docs
pc fd -t d "project" # Glob: directories only
pc fd -E "report_\d{4}" /docs # Regex: report_2024 etc.
pc fd -Fi "readme" / # Fixed: case-insensitive substring
pc fd "*" --larger-than 100M # Files over 100 MB
pc fd "*.jpg" --newer-than 2026-01-01 # Recent photosSearch for a pattern across your files.
Default mode walks the sealed full-text index; no file content is downloaded, only the per-file sealed token index (built on upload + backfill). Multiple tokens (space-separated) are AND'd, case-insensitive, two-character minimum. Files that aren't indexed yet are silently skipped; the web client backfills older uploads automatically.
Passing a [path] argument, -A/--all-files, -E (regex), or -F (fixed substring) switches to the per-file download + line-scan path. Slower but scopes to the given path, covers unindexed files, and supports regex or substring matches that cross token boundaries.
pc gr "TODO" # fast index search across all files
pc gr "function authenticate" # AND tokens
pc gr -l "TODO" # show only file names
pc gr "fmt.Println" /src # scoped scan (path arg triggers full scan)
pc gr -E "func\s+\w+" /src # regex (triggers full scan)
pc gr -F "API_KEY" /configs # literal substring (triggers full scan)List files and directories in your cloud storage.
If no path is specified, lists the current working directory. Use 'pc cd' to change the working directory.
Flags: -l Show detailed information (size in bytes, full timestamps) -R List directories recursively -S Sort by file size (largest first) -t Sort by modification time (newest first)
pc ls -l -S # List with details, sorted by sizeDisplay a tree view of directories and files.
If no path is specified, shows the tree from the current working directory.
Display the current working directory in your cloud storage.
Display the content of a text file from your cloud storage.
Only text files up to 1MB can be displayed. Binary files are not supported.
Flags: -n, --head N Show only the first N lines -t, --tail N Show only the last N lines
Show differences between two versions of a file, between a version and the current file, or between the cloud file and a local copy (--local).
Only works with text files. Downloads and decrypts the cloud side locally, then displays a unified diff.
pc di /report.md 3 5 # Diff version 3 vs version 5
pc di /report.md 3 # Diff version 3 vs current
pc di /report.md -l ./report.md # Diff cloud file vs local copy
pc di /report.md 3 -l ./report.md # Diff version 3 vs local copyDownload a file or folder from your cloud storage.
If local-path is not specified, downloads to the current directory. Use - as local-path to stream the decrypted file to stdout for piping.
Use --extract (-x) to download a folder's contents as individual files, preserving the directory structure locally instead of creating a ZIP.
Use --zip (-z) to download a folder's contents into a local ZIP archive. Files are decrypted before being added to the archive.
pc dl /Documents/report.pdf ./ # Download a file
pc dl /Documents ./docs -x # Download folder contents individually
pc dl /Documents ./backup.zip --zip # Download folder as ZIP archive
pc dl /backup.sql.gz - | gunzip # Stream decrypted file to stdoutManage your favorites list.
Without arguments, lists all favorites. With a path argument, toggles the favorite status.
pc fv # List favorites
pc fv /Documents # Toggle favorite
pc fv add "*.jpg" # Add all matches to favorites
pc fv rm /Documents # Remove from favoritesManage hidden files and folders.
Without arguments, lists all hidden items. With a path argument, toggles the hidden status.
pc hd # List hidden items
pc hd /Private # Toggle hidden
pc hd add "*.bak" # Hide all matches
pc hd rm /Private # UnhideCreate a new directory in your cloud storage.
By default, the parent directory must already exist. Use -p to create parent directories as needed.
Mount your PigCloud storage as a local filesystem.
Run 'pc mn' to check mount status. Use 'pc mn start' to mount.
Sync mode (default): files are downloaded to a local folder and kept in sync bidirectionally. The folder is mapped as a drive letter (Windows) or symlink (Linux/macOS). Reads and writes are instant, with no network latency.
Virtual mode (--virtual): FUSE/WinFsp network-backed mount where files are fetched on demand. Lower disk usage but higher latency.
Requires unlocked encryption keys (run 'pc uk' first).
pc mn # Show mount status
pc mn start /Photos P: # Sync /Photos to P: drive (fast, local files)
pc mn start /Photos P: --virtual # Virtual mount (network-backed)
pc mn start # Sync root at default location
pc mn stop # Unmount and stop sync
pc mn files --tree # Show synced files as a tree
pc mn files --issues # Show files with sync problems
pc mn conflicts # List files changed on both sides
pc mn resolve <path> -k both # Settle a conflict, keeping both copiesMove the local sync folder to a new directory. A running mount daemon is stopped during the move; restart it afterward with 'pc mn start '.
Use -f to skip the confirmation prompt.
pc mn mv -d D:\PigCloud
pc mn mv -d /mnt/data/pigcloud -fSettle a conflict for a file that changed both locally and remotely.
--keep local upload your local edit (the remote copy stays in version history) --keep remote discard your local edit and re-download the remote file --keep both keep the local edit as a "(conflict )" copy and re-download
pc mn resolve Docs/notes.txt -k both
pc mn resolve Docs/notes.txt -k remote -fpc mn status
pc mn status /Photos # Detail for one of several mounts
pc mn status --json # machine-readable: {"running", "mounts": [...]}pc mn stop # Stop the only mount
pc mn stop /Photos # Stop one of several mounts
pc mn stop -a # Stop every running mountMove files or directories to a new location, or rename one.
If target is a directory, sources are moved into it. If target doesn't exist, a single source is renamed to target.
Accepts multiple sources and glob patterns; the last argument is the target, which must be an existing directory when moving more than one source.
Flags: -d, --dry-run Show what would be moved without actually moving
pc mv /draft.txt /final.txt # Rename
pc mv a.txt b.txt /Archive/ # Move several into a directory
pc mv "*.log" /logs/ # Move by globDelete files or directories from your cloud storage.
Accepts multiple paths and glob patterns (* ? [], last path segment only).
By default, items are moved to the recycling bin and can be restored later. Items in the recycling bin are automatically deleted after 30 days.
Use --permanent to bypass the recycling bin and delete immediately.
Flags: -p, --permanent Permanently delete, bypassing the recycling bin -d, --dry-run Show what would be deleted without actually deleting -f, --force Skip confirmation prompt
pc rm /old-report.pdf # Trash one file
pc rm a.txt b.txt c.txt # Trash several
pc rm "*.tmp" # Trash everything matching a glob
pc rm "/logs/*.log" -p -f # Permanently delete, no promptRestore a file or directory from the recycling bin to its original location.
Accepts either a path ('/photo.jpg') or a 32-char hex node ID from 'pc tb ls'. Paths are resolved against the recycling bin; if multiple deleted items share the same name, you'll be asked which to restore.
pc rs /report.pdf # Restore by path (prompts on collision)
pc rs abc123def456... # Restore by node ID from 'pc tb' outputShow all items in the recycling bin.
Use 'rs ' to restore items or 'tb empty' to empty the bin.
pc tb # List trash contents
pc rs <node-id> # Restore an item by node ID
pc tb empty # Empty the binCreate a new text file in your cloud storage.
The first argument is either a full path (/Documents/notes.txt) or a bare name combined with an optional directory argument.
Content can be provided via --content flag or piped from stdin. With neither, an empty file is created. The file is encrypted client-side before upload (E2EE).
If no extension is given, .txt is appended automatically. Only text file types are allowed.
pc tc /Documents/notes.txt -c "Hello world"
pc tc notes.txt /Documents --content "Hello world"
echo "piped content" | pc tc log.txt /Logs
pc tc readme.md --content "# Title"Upload a local file or directory to your cloud storage.
If remote-path is not specified, uploads to the current working directory. If remote-path is a directory, the file keeps its original name. If a directory is given, all files are uploaded recursively.
Use '-' as the local path to read from stdin. Remote path is required when uploading from stdin.
pc ul report.pdf /Documents/ # Upload a file
pc ul ./my-folder /Backups/ # Upload a directory recursively
echo "hello" | pc ul - /hello.txt # Upload from stdinView, restore, or delete file version history.
Subcommands: vh List versions (default) vh rs Restore a specific version vh rm Delete a specific version
pc vh /report.pdf # List versions
pc vh rs /report.pdf 42 # Restore version #42
pc vh rm 42 # Delete version #42pc vh dl /report.pdf 42 ./ # Download version #42
pc vh dl /report.pdf 42 old.pdf # Download to specific filepc vh prune /report.pdf --keep 3 # Keep last 3 versions
pc vh prune /report.pdf --keep 0 # Delete all versionsEncrypted chat with other PigCloud users (requires friendship).
When called with no arguments, lists conversations. With a username, shows recent messages. With a username and message, sends a message.
Use subcommands for more control:
ch List conversations ch Show messages ch "hello" Send a message (shorthand) ch send "message" Send (explicit, supports stdin pipe) ch send -f /file Share a file in chat ch rm Delete own message ch read Mark conversation as read ch unread Show unread counts
pc ch # List conversations
pc ch alice # Show messages with alice
pc ch alice "hello!" # Send message to alice
echo "hi" | pc ch send alice # Pipe message
pc ch send alice -f /Photos # Share a filepc fr # List your friends
pc fr add alice # Send a friend request
pc fr accept alice # Accept a friend request
pc fr decline alice # Decline a friend request
pc fr rm alice # Remove a friend
pc fr pending # List pending friend requestsManage public links for files and directories.
With a path argument, shows existing link details (or "no link" if none exists). Use subcommands to create, update, or revoke links.
pc pl /report.pdf # Show link details
pc pl add /report.pdf # Create public link
pc pl add /report.pdf -P secret123 # Create with password
pc pl add /report.pdf --qr # Print a scannable QR code
pc pl set /report.pdf --max-downloads 50 # Set download limit
pc pl rm /report.pdf # Revoke linkManage shared files and folders.
Without arguments, shows shares you've received (inbox). With a path, shows share recipients for that folder.
pc sr # Show shares you've received
pc sr /Shared # List recipients for /Shared
pc sr add alice /Shared # Share with alice
pc sr rm /Shared alice # Revoke alice's access
pc sr set /Shared -P secret # Add passwordpc sr accept /Documents alice # Accept a share from alicepc sr add alice /Documents # Share with alicepc sr inbox # Show folders shared with youUpdate settings on an existing share.
Update a recipient's permission level: sr set /Docs -u bob -p edit
Set or change share password/expiration: sr set /Docs --password secret123 sr set /Docs --expires "2026-12-31"
Remove password/expiration: sr set /Docs --remove-password sr set /Docs --remove-expiration
View your recent activity and notifications.
pc ac # Show recent activity
pc ac -u # Show only unread notifications
pc ac -n 5 # Show last 5 events
pc ac -t login,share_sent # Filter by event type(s)
pc ac --since 2026-05-01 # Only events on or after a date
pc ac -f # Follow: print new events as they happen
pc ac -m all # Mark all as read
pc ac -m 42 # Mark a specific event as readShow the status of your PigCloud API key, or revoke it.
PigCloud issues a single API key per account, the same key this CLI uses to authenticate. 'pc ak' shows its identifier, creation time, and last use.
'pc ak revoke' invalidates the key server-side so it stops working everywhere, then clears it from this machine. Create a new key in account settings on the web, then run 'pc li' to log back in.
pc ak # Show API key status
pc ak revoke # Revoke the API key (logs this CLI out)View and modify CLI configuration settings.
Subcommands: list (ls) Show all configuration values get Get a specific configuration value set Set a configuration value
Valid configuration keys: api_key - Your API key for authentication endpoint - The PigCloud API endpoint URL cwd - Current working directory in cloud storage default_json - Always output JSON (true/false) default_quiet - Suppress non-essential output (true/false) no_color - Disable colored output (true/false) language - Server message language: en or de (default en)
Get a specific configuration value.
Valid keys: api_key, endpoint, cwd, default_json, default_quiet, no_color, language
Set a configuration value.
Valid keys: api_key, endpoint, cwd, default_json, default_quiet, no_color, language
pc cf set cwd /Documents # Set a configuration value
pc cf set endpoint https://custom.example.com/apiGenerate shell completion scripts for PigCloud CLI.
To load completions:
Bash: $ source <(pigcloud completion bash)
$ echo 'source <(pigcloud completion bash)' >> ~/.bashrc
Zsh: $ source <(pigcloud completion zsh)
$ echo 'source <(pigcloud completion zsh)' >> ~/.zshrc
Fish: $ pigcloud completion fish | source
$ pigcloud completion fish > ~/.config/fish/completions/pigcloud.fish
PowerShell: PS> pigcloud completion powershell | Out-String | Invoke-Expression
PS> pigcloud completion powershell >> $PROFILE
Check the local CLI setup: credentials, endpoint reachability, encryption keys, the key agent, mount backends, and the mount daemon. Exits non-zero when a check fails.
pc dr
pc dr --jsonAnalyze storage usage broken down by file type.
Shows how much space each category (images, documents, videos, etc.) uses.
pc du # Show storage breakdownPrint a quickstart tour covering identity, common commands, and power features. Re-run anytime to refresh your memory.
pc hi # Friendly walkthrough of the CLIDisplay help information about PigCloud CLI commands.
Display detailed information about a file or directory.
Shows size, dates, type, sharing status, and recipients for shared folders.
Open a file or folder in your default web browser.
If no path is specified, opens the current working directory.
pc op # Open current directory
pc op / # Open root directory
pc op /photos # Open the photos folderShow files and folders you've recently opened or accessed.
pc rc # List recent items
pc rc -n 10 # Show last 10 recent itemsStart an interactive shell for running multiple commands.
The shell shows your current working directory in the prompt. Type 'exit' or 'quit' to leave the shell. Press Ctrl+C to cancel the current line, Ctrl+D to exit.
Example session: / > ls / > cd Documents /Documents > ct readme.txt /Documents > exit
View and manage active login sessions and trusted devices.
Without arguments, lists all sessions and trusted devices. Use subcommands to revoke sessions or forget devices.
pc ss # List sessions and devices
pc ss revoke <session-id> # Revoke a session
pc ss revoke-all # Revoke all other sessions
pc ss devices # List trusted devices only
pc ss forget <device-id> # Remove a trusted deviceDisplay storage usage statistics for your account.
Download every file under a path and run the strict-AND signature check (owner-key pin, or TEE signatures for sanitized files). Bytes are verified in memory and discarded; nothing is written to disk.
Reports tampered or unverifiable files and exits non-zero if any fail. Files uploaded before the signing rollout are reported as unsigned, not failed.
pc vf # Verify everything
pc vf /Documents # Verify one folder
pc vf -n 100 # Stop after 100 filesDisplay the version, commit hash, and build date of the CLI.
Download all personal data associated with your account as a JSON file.
Includes account info, file metadata, shares, activity log, and more. File contents are NOT included (encrypted at rest and too large).
pc xp # Export to pigcloud-export-YYYY-MM-DD.json
pc xp -o backup.json # Export to a specific fileConfiguration is stored in:
- Linux / macOS:
~/.config/pigcloud/config.json - Windows:
%APPDATA%\pigcloud\config.json
{
"api_key": "pc_live_abc123...",
"endpoint": "https://pigcloud.de/cloud/actions.php",
"cwd": "/Documents",
"e2ee_public_key": "base64...",
"e2ee_private_key": "base64...(encrypted)"
}| Key | Description |
|---|---|
api_key |
Your API key for authentication |
endpoint |
The PigCloud API endpoint URL |
cwd |
Current working directory in cloud storage |
e2ee_* |
End-to-end encryption keys (fetched automatically on first use) |
Manage config from the CLI:
pc cf list # Show all values
pc cf get cwd # Get a single value
pc cf set cwd /Documents # Set a value| Problem | Solution |
|---|---|
Authentication required |
Run pc login to set your API key. Keys can be generated in the PigCloud web UI under Settings > API Keys. |
Connection refused / timeouts |
Check your network and that the endpoint in pc cf get endpoint is reachable. |
| Upload fails for large files | Files up to your plan's storage limit are supported. Check remaining space with pc st. |
File not found on a path you can see in the web UI |
Your CLI working directory may differ. Run pc wd to check and pc cd / to reset. |
| Destructive command prompts | Most destructive commands (rm, vh rm, pl rm, tb empty) prompt for confirmation. Use -f to skip, or -d (dry run) to preview. |
This repository is a source mirror of the CLI as shipped in each release, published for review and reproducible builds. It does not accept pull requests; bug reports and feature requests go to pigcloud-issues.
The source is available under the PolyForm Internal Use License 1.0.0: you may read, audit, and build it for your own internal or personal use. Any other use, including redistribution, needs written permission from PigTech. Official binaries are provided under the PigCloud Terms of Service.