# Docs - **Get started** - [Introduction](/docs): Docs for vmup: install the CLI, upload a batch over SSH, and paste the prompt into your coding agent. - [Install](/docs/install): Install the vmup CLI with npm, pnpm, yarn, bun, or the curl script. Needs Node 18+ and OpenSSH, then you are ready for the first upload. - [First upload](/docs/quickstart): Walk through install, vmup init, an SSH check, one file upload, and pasting the prompt into the agent. - **How-to** - [Run init again](/docs/guides/init): Run vmup init to add a profile, overwrite one, or write config.toml without the wizard. Use -y and VMUP_* when you cannot answer prompts. - [Upload files](/docs/guides/upload): Pass paths, drop a directory, or use the native picker. Every mode uploads over SSH into one remote folder and copies the prompt for the agent. - [Capture the clipboard](/docs/guides/clipboard): How vmup --clip captures copied files and screenshots, batches them over SSH, and copies a prompt to paste into the agent. - [Upload screenshots to a remote coding agent](/docs/guides/screenshots-to-agent): Send laptop screenshots to an agent on a VM: capture with --clip or watch a folder, upload over SSH, paste the prompt. - [Clipboard to SSH for Claude Code or Cursor](/docs/guides/clipboard-for-agents): Use vmup --clip to batch clipboard files over SSH and paste the prompt into Claude Code, Cursor, or any agent that reads paths on the host. - [Watch a folder](/docs/guides/watch): Watch a folder for files added after start, press Enter to upload one SSH batch, and paste the prompt into the coding agent. - [Point vmup at another VM](/docs/guides/profiles): Point vmup at another host with saved profiles, a default profile, or a one-shot ssh_host alias from your OpenSSH config. - [Restrict to images](/docs/guides/restrict-types): Turn off accept_all_files for images only, then opt into video with --video or extra types with --force on picker and path args. - [Script vmup](/docs/guides/scripting): Non-interactive vmup init, VMUP_* env overlays, and --json on stdout for scripts and CI. The spinner still goes to stderr. - [Clean up batches](/docs/guides/cleanup): TTL, the remote sweeper cron, vmup prune --all to wipe live batches, and leftover local staging under ~/.cache/vmup after a failed or kept upload. - [Fix SSH](/docs/guides/ssh): Read the printed SSH error, match it to a cause (key, host, permissions), then retry with vmup check before you upload. - **Reference** - [Commands](/docs/reference/commands): Reference for vmup, init, check, profiles, watch, prune, and the default upload, including what each command is for. - [Flags](/docs/reference/flags): Every vmup command-line flag, which commands accept it, and how upload, watch, clip, and prune options differ. - [config.toml](/docs/reference/config): config.toml path, keys, defaults, and profiles for hosts, TTL, file limits, and SSH settings. - [Environment variables](/docs/reference/env): Set VMUP_HOST, TTL, and other keys as environment overlays so scripts can change SSH and limits without editing config.toml. - [File types and limits](/docs/reference/file-types): Allowed extensions, size and count caps, junk names vmup drops, and staged names like image-01.png on the remote host. - [JSON output](/docs/reference/json): JSON stdout schema for vmup --json on upload and check, including fields for batch id, remote path, and prompt. - [Exit codes](/docs/reference/exit-codes): What vmup exit codes 0, 1, 2, 3, 4, and 130 mean, and which failures (usage, empty batch, SSH, upload, cancel) map to each. - [Error strings](/docs/reference/errors): Messages the CLI prints, which code path emits them, and what to do next when SSH, staging, or an empty batch fails. - **Explanation** - [How a batch is built](/docs/explain/how-it-works): Collect files, stage them under a batch id, stream them over ssh into a partial remote dir, rename into place, and copy the prompt to the clipboard. - [Why batches expire](/docs/explain/ttl): Learn how vmup's 5-minute TTL, remote sweeper, prune --all, and local cleanup remove uploaded batches and partial directories. - [Direct SSH vs ssh_host](/docs/explain/ssh-modes): Choose direct SSH (host, user, key, port) or an OpenSSH alias (ssh_host) from ~/.ssh/config. vmup still calls ssh. - [vmup vs scp and rsync](/docs/explain/vs-scp): When to use vmup instead of copying one file with scp or syncing a tree with rsync, if the job is one folder path for a coding agent. - **Project** - [Changelog](/docs/changelog): Release notes for vmup, from 0.1.0 through the current npm version, covering CLI, TTL, install, and docs-site changes. - [Security and contact](/docs/contact): Report CLI bugs on GitHub, send security issues through the private advisory form, and find source, npm, and the MIT license. # Learn > How to get screenshots, PDFs, and other laptop files onto the VM where Claude Code, Cursor, or Codex runs. Paste fails over SSH; a remote path does not. - [Guides for remote coding agents](https://vmup-i4s5wq4p8-nyxsky404s-projects.vercel.app/learn): How to get screenshots, PDFs, and other laptop files onto the VM where Claude Code, Cursor, or Codex runs. Paste fails over SSH; a remote path does not. - [vmup: Send screenshots and files to a remote coding agent](https://vmup-i4s5wq4p8-nyxsky404s-projects.vercel.app/learn/vmup-remote-agent-files): Use vmup to send screenshots, PDFs, recordings and other files over SSH into one temporary folder that your remote coding agent can inspect. - [How to paste screenshots into a remote terminal over SSH](https://vmup-i4s5wq4p8-nyxsky404s-projects.vercel.app/learn/paste-screenshots-remote-terminal): Paste screenshots into a remote terminal by uploading each image over SSH and pasting its remote path. Use scp for one image or vmup for a batch. - [How to paste an image into Claude Code over SSH](https://vmup-i4s5wq4p8-nyxsky404s-projects.vercel.app/learn/claude-code-paste-image-ssh): Paste an image into Claude Code over SSH by saving it, copying it to the remote host with scp, and referencing the remote path. Includes vmup alternatives. - [How to attach an image to Codex CLI over SSH](https://vmup-i4s5wq4p8-nyxsky404s-projects.vercel.app/learn/codex-cli-image-ssh): Attach an image to Codex CLI over SSH by uploading it with scp, then passing the remote path to codex --image. Includes macOS, Linux and WSL examples. - [How to scp multiple files to a remote server](https://vmup-i4s5wq4p8-nyxsky404s-projects.vercel.app/learn/scp-multiple-files): Learn how to scp multiple files with one command, including filenames with spaces, wildcards, and a remote coding agent batch. - [Send files to a remote coding agent over SSH](https://vmup-i4s5wq4p8-nyxsky404s-projects.vercel.app/learn/send-files-to-remote-coding-agent): Send screenshots, PDFs and recordings to a remote coding agent with scp, then provide their remote paths or one temporary batch folder. Includes WSL steps. - [Cursor Remote-SSH local files: upload to the remote workspace](https://vmup-i4s5wq4p8-nyxsky404s-projects.vercel.app/learn/cursor-remote-ssh-local-files): Move a laptop file into your Cursor Remote-SSH workspace with scp, then attach or mention its remote path so the agent can read it. - [Claude Code SSH screenshot uploaders compared](https://vmup-i4s5wq4p8-nyxsky404s-projects.vercel.app/learn/claude-code-ssh-screenshot-tools): Compare screenshot uploaders for Claude Code over SSH: manual scp, automatic Mac apps, clipboard tools, terminal helpers and vmup batches. - [Claude Code: no image found in clipboard over SSH](https://vmup-i4s5wq4p8-nyxsky404s-projects.vercel.app/learn/claude-code-no-image-found-clipboard-ssh): Claude Code says “No image found in clipboard” over SSH? Run scp from your laptop, then give Claude Code the uploaded image's remote path. ## Optional - [Full docs and Learn guides as markdown](https://vmup-i4s5wq4p8-nyxsky404s-projects.vercel.app/llms-full.txt)