Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Your agent has compute, memory, and context. What it lacks is a jump gate to the physical world. Perkoon is that gate. Send files from agent to human — they...
Your agent has compute, memory, and context. What it lacks is a jump gate to the physical world. Perkoon is that gate. Send files from agent to human — they...
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
Your agent lives in a world of tokens. Your user lives in a world of devices. Perkoon is the airlock between them. Not "AI-ready" the way a gas station is gourmet-ready. Actually built for machines — JSON event streams, structured exit codes, and a state machine that doesn't need a browser, a mouse, or a soul. Two supported flight paths: Agent → Human: Your agent sends a file. The human opens a link in any browser. No install required on their end. Agent → Agent: CLI to CLI. Two machines, no humans in the loop. Fully autonomous data transit. P2P transfers are free, unlimited, and encrypted. Both ends need to be online — that's the only constraint. For sensitive files, always use --password — without it, anyone with the share link can download.
Replace /path/to/file with the actual file path: rm -f /tmp/perkoon-send.log /tmp/perkoon-send.pid perkoon send /path/to/file --json --timeout 1800 > /tmp/perkoon-send.log 2>&1 & echo $! > /tmp/perkoon-send.pid # Wait for session code (up to 30s) for i in $(seq 1 30); do if grep -q session_created /tmp/perkoon-send.log 2>/dev/null; then grep session_created /tmp/perkoon-send.log break fi if grep -q '"event":"error"' /tmp/perkoon-send.log 2>/dev/null; then echo "===SEND FAILED===" && cat /tmp/perkoon-send.log break fi sleep 1 done Output: {"event":"session_created","session_code":"K7MX4QPR9W2N","share_url":"https://perkoon.com/K7MX4QPR9W2N"} IMMEDIATELY tell the user the share URL. Example: "Here's your file — open this link on any device to download it: https://perkoon.com/K7MX4QPR9W2N" The receiver doesn't need to install anything. The link works in any browser. For password-protected sends, add --password SECRET and share both the URL and password.
You MUST run this after sharing the link. Do NOT skip this step. for i in $(seq 1 360); do if grep -q transfer_complete /tmp/perkoon-send.log 2>/dev/null; then echo "===TRANSFER COMPLETE===" && grep transfer_complete /tmp/perkoon-send.log break fi if grep -q '"event":"error"' /tmp/perkoon-send.log 2>/dev/null; then echo "===TRANSFER FAILED===" && grep error /tmp/perkoon-send.log break fi if [ "$((i % 30))" -eq 0 ]; then grep progress /tmp/perkoon-send.log 2>/dev/null | tail -1 fi sleep 5 done ===TRANSFER COMPLETE=== → Tell the user: "File sent successfully!" Include speed and duration from the JSON. ===TRANSFER FAILED=== → Tell the user what went wrong. You MUST tell the user the outcome. Never finish silently.
Replace CODE with the 12-character session code: rm -f /tmp/perkoon-recv.log /tmp/perkoon-recv.pid perkoon receive CODE --json --overwrite --output /home/openclaw/.openclaw/workspace/received/ > /tmp/perkoon-recv.log 2>&1 & echo $! > /tmp/perkoon-recv.pid for i in $(seq 1 360); do if grep -q transfer_complete /tmp/perkoon-recv.log 2>/dev/null; then echo "===TRANSFER COMPLETE===" && grep transfer_complete /tmp/perkoon-recv.log break fi if grep -q '"event":"error"' /tmp/perkoon-recv.log 2>/dev/null; then echo "===TRANSFER FAILED===" && grep error /tmp/perkoon-recv.log break fi sleep 5 done For password-protected sessions, add --password SECRET. ===TRANSFER COMPLETE=== → Tell the user: "File received!" and the save path. ===TRANSFER FAILED=== → Tell the user what went wrong. You MUST tell the user the outcome. Never finish silently. Files are saved to /home/openclaw/.openclaw/workspace/received/.
Stream a received file directly into another process — no disk write: perkoon receive CODE --output - > /path/to/destination
FlagDescription--jsonMachine-readable JSON events (always use)--password <pw>End-to-end password protection--timeout <sec>Peer wait time (default: 300, use 1800)--output <dir>Save directory (default: ./received)--output -Stream to stdout--overwriteReplace existing files--quietSuppress human-readable output
Events appear in order on stdout when using --json: EventMeaningKey fieldssession_createdReady — share the link nowsession_code, share_urlreceiver_connectedPeer joinedwebrtc_connectedDirect P2P link establishedprogressTransfer in progresspercent, speed, etatransfer_completeDoneduration_ms, speederrorFailedmessage, exit_code
CodeMeaning0Success1Bad arguments2File not found3Network/session error4Wrong password5Timeout — no peer joined
ALWAYS use --json for parseable output ALWAYS share the URL immediately when session_created appears ALWAYS use --timeout 1800 for sends (30 min for the human to open the link) ALWAYS use --overwrite for receives ALWAYS monitor until transfer_complete or error — then tell the user the result NEVER kill the process mid-transfer The receiver does NOT need perkoon installed — the browser link works for everyone
Messaging, meetings, inboxes, CRM, and teammate communication surfaces.
Largest current source with strong distribution and engagement signals.