beta
gooi.io
/ agents

File sharing for agents & CLI

One script. Your agent encrypts files locally and uploads them via curl. The server never sees the content.

AES-256-GCM · Zero-knowledge · No account needed

Quick start

# Download
$ curl -sO https://agents.gooi.io/gooi && chmod +x gooi

# Upload a file
$ ./gooi photo.jpg
▸ Uploaden: photo.jpg (2 MiB, 1 chunk(s))
▸   Chunk 1/1
✓ Upload voltooid

  https://gooi.io/d/xR9kLm3pQw7n#Fh8jfS88i0P1X0Wz_vysBDkaM73d

# That URL is the shareable link. Anyone can download & decrypt.
1

Encrypt

File is encrypted on your machine with AES-256-GCM before anything is sent.

2

Upload

Encrypted data is uploaded to gooi.io in 64 MiB chunks via curl.

3

Share

You get a link. The decryption key is in the #fragment — it never reaches the server.

For AI assistants & agents

Point your agent to this page. Even simple models can follow these instructions.

HOW TO SHARE A FILE VIA GOOI.IO
================================

You are an agent that needs to share a file with a user.
gooi.io lets you upload an encrypted file and get a shareable link.
The file is encrypted on your machine — the server cannot read it.

STEP 1 — Install (one time only):

    curl -sO https://agents.gooi.io/gooi && chmod +x gooi
    pip install cryptography

STEP 2 — Upload a file:

    ./gooi /path/to/file.ext

STEP 3 — The script prints a URL:

    https://gooi.io/d/abc123#base64urlkey

    Share this URL with the user. Anyone with the link can
    download and decrypt the file in their browser. No account needed.

NOTES:
- The script needs: bash, curl, python3, cryptography (pip package)
- Max file size: 5 GB (up to 100 GB with a VIG API key)
- Files expire after 24 hours (up to 30 days with VIG)
- Use --api-key for larger uploads: ./gooi --api-key gk_... file.ext
- The #fragment (after #) is the decryption key — it never goes to the server
- Upload to a custom server: ./gooi file.ext https://my.server.com
- Or set GOOI_SERVER=https://my.server.com as environment variable

Requirements

bash4.0 or newer
curlAny recent version
python33.6 or newer
🔒
cryptographypip install cryptography

How encryption works

The gooi script produces files in the GOOI binary format v1, identical to what the browser client generates. Files encrypted by the script are fully compatible with the browser-based decryption at gooi.io.

GOOI Binary Format v1 — 24-byte header + encrypted chunks

Bytes  0-3    Magic "GOOI"
Byte   4      Version: 0x01
Byte   5      Chunk size exponent: 26 (= 64 MiB)
Bytes  6-11   Base IV (6 random bytes)
Bytes  12-19  Original file size (uint64 big-endian)
Bytes  20-23  Chunk count (uint32 big-endian)
Bytes  24+    Encrypted chunks: [ciphertext + 16-byte GCM tag]

IV per chunk = baseIV(6B) + chunkIndex(4B BE) + 0x0000(2B) = 12 bytes
Key          = random 256-bit AES key, placed in URL #fragment