ShareLane for AI agents & developers
ShareLane can be driven programmatically so an AI agent can accomplish tasks like “bring this file from my Android to my iPhone / Mac”. The end-to-end encryption runs on the client (agent) side; the ShareLane server only ever stores random IDs and ciphertext. The share key is carried only inside the returned link.
Option A — MCP server (recommended for AI agents)
An official Model Context Protocol (MCP) server exposes three tools:
- sharelane_send_file
{ path }→ returns a share link + key. - sharelane_send_text
{ text, name? }→ returns a share link. - sharelane_receive
{ link, out_dir? }→ downloads & decrypts the contents.
It is zero-dependency Node.js (≥ 20) and does the crypto locally. Add it to an MCP client, e.g. Claude Code:
claude mcp add sharelane -- node /path/to/sharelane/mcp/index.mjs
or Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"sharelane": { "command": "node", "args": ["/path/to/sharelane/mcp/index.mjs"] }
}
}
Then an agent can simply be told: “Send ~/report.pdf to my other device with
ShareLane” → it calls sharelane_send_file and hands you the link to open
on the target device (no account, no app). Shares auto-expire after ~24 hours.
Option B — CLI
node cli.mjs send ./report.pdf # prints the share link node cli.mjs send-text "hello" # prints the share link node cli.mjs receive "https://sharelane.app/#k=xxxxx-xxxxx-xxxxx" ./downloads
Option C — build your own client (HTTP API + crypto)
The MCP server above is the reference implementation. The building blocks:
Key & derivation
- Share key: 15 chars from the alphabet
abcdefghjkmnpqrstuvwxyz23456789. Canonical form = lowercase, strip non-[a-z0-9]. - Room id =
SHA-256("sharelane-room-v1:" + canonicalKey), first 16 bytes, hex (32 chars). - Room key =
PBKDF2(canonicalKey, salt="sharelane-enc-v1", 150000, SHA-256)→ AES-256-GCM. - Blob format:
IV(12) ‖ ciphertext ‖ GCM-tag(16). - Per-file envelope (v2): random file key F (AES-256-GCM); file bytes encrypted with F;
F wrapped under the room key (encrypt its 32 raw bytes) → the item’s base64
wrappedKey(60 bytes). - Metadata
{ name, type, kind }is JSON, encrypted under the room key → base64X-Enc-Meta. - Share link:
https://sharelane.app/#k=<key-with-dashes>.
Endpoints (base https://sharelane.app)
POST /api/rooms/<roomId>/items— body = ciphertext bytes; headersX-Enc-Meta,X-Wrapped-Key,X-Protected: 0. Creates the room on first upload.POST /api/rooms/<roomId>/items/initthenPUT /api/rooms/<roomId>/items/<id>/chunks/<i>— for files > 5 MB (each chunk encrypted with F).GET /api/rooms/<roomId>→{ items: [...] }(id, size, encMeta, wrappedKey, chunked, chunkCount, expiresAt).GET /api/rooms/<roomId>/items/<id>(or/chunks/<i>) → ciphertext bytes.
Free tier: 20 MB/file, 100 MB/session. Send an X-License header (a
ShareLane Premium key) to raise limits.
Privacy note
Prefer the MCP server / CLI: the crypto runs on your machine and the server stays content-blind. Treat the share link as a secret — anyone with it can read the files until they expire.
Operator: omo-net GmbH, Rheinbach, Germany ·
Legal notice & privacy · reference implementation in the
ShareLane repository under mcp/.