# Perkoon > P2P encrypted file transfer. No accounts. No size limits. Files never touch our servers. Perkoon transfers files directly between browsers using WebRTC. We don't see your data. We don't want to. ## Quick Start (Sender) 1. Create session: navigate to https://perkoon.com/create, accept TOS, click Start 2. Add files: page.setInputFiles('[data-testid="file-input"]', filePath) 3. Queue files in session (required — push event to root LiveView): view = window.liveSocket.getViewByEl(document.querySelector('[data-phx-main]')) view.pushHookEvent(mainEl, null, 'add_files', { files: [...] }) 4. Share session code with recipient 5. Wait for receiver: window.__perkoon.participants.length >= 2 6. Click [data-testid="start-transfer"] to begin 7. Wait: window.__perkoon.transfer.status === 'complete' ## Quick Start (Receiver) 1. Register download handler: page.on('download', d => downloads.push(d)) 2. Navigate to https://perkoon.com/{SESSION_CODE}?agent=true 3. Accept transfer: click [data-testid="transfer-tos-checkbox"], then [data-testid="transfer-accept"] 4. Files auto-download as blob downloads (save method auto-set, no OS dialogs) 5. Wait: window.__perkoon.transfer.status === 'complete' 6. Save files: await download.saveAs('./received/' + download.suggestedFilename()) ## Ready-to-Run Scripts - curl https://perkoon.com/perkoon_send.mjs > send.mjs && node send.mjs /path/to/file.zip - curl https://perkoon.com/perkoon_receive.mjs > receive.mjs && node receive.mjs SESSION_CODE ./output - Requires: npm install playwright ## Resources - [Full Agent Guide](https://perkoon.com/automate): Playwright examples, state API, selectors, ready-to-run scripts - [Agent Card](https://perkoon.com/.well-known/agent.json): Machine-readable capabilities (A2A) - [Pricing](https://perkoon.com/pricing): P2P free forever, cloud storage paid ## Key Concepts - State API: window.__perkoon (session, transfer, participants, files) - Agent identity: add ?agent=true to session URL - Stable selectors: all interactive elements have data-testid attributes - Custom events: document listens for perkoon:transfer:*, perkoon:participant:*, perkoon:file:ready ## Pricing - P2P: Free forever, unlimited size, both peers must be online simultaneously - Cloud storage: Paid plans from https://perkoon.com/pricing, for offline recipients (automation not yet supported)