Prompt: share files over IPFS (public, password- or key-encrypted)
Have an agent pin a file or folder on the ird IPFS gateway and hand you a
link to share — optionally encrypted on your machine first so the
network only ever holds ciphertext — and take it down again when it has
served its purpose.
Needs: ird access (the ird CLI, logged in, for encrypted shares; MCP works for public and password/key shares but recipients decrypt with the CLI); local access to the files
Costs: hourly per MB pinned plus per MB downloaded (credits_prices → recurring.ipfs-pin-hourly)
Group: hosting
Paste everything below the line into a fresh conversation. Fill in the
FILL IN block first.
Task
Share the files below, the way MODE says, and tell me exactly what to
send the recipient. Track the pin so it can be removed on UNPIN_AFTER.
FILL IN
PATH: ./exports/q3-report.pdf # a file, or a folder (public mode only)
MODE: password # public | password | recipient
RECIPIENT_KEY: irdpk1… # recipient mode: their public key from `ird ipfs keys ls`
SIGN: yes # recipient mode: sign so they can verify it came from me
UNPIN_AFTER: 2026-10-01 # when to take it down (or "keep")
Non-negotiable rules
- Encrypted content is opaque. Password- and key-encrypted pins
download only through
ird ipfs get --decrypt; they cannot be viewed
in a browser. Say so before pinning if MODE is not public.
- Folders cannot be encrypted. In
password/recipient mode, a
folder must be archived first (tar czf or zip); show me the
archive size before uploading.
- A lost password or key is unrecoverable. Never generate a password
silently: either use the one I give in chat, or generate one, show it
to me once, and remind me to store it.
- Cost check. Show size and monthly cost (
per_mb_hour × MB × 730)
before uploading; over 1 GB, ask.
- Pins are billed until removed. Name every share pin
share:<basename>
so they're easy to find, and do the takedown step in UNPIN_AFTER.
Steps
A. Prepare. Resolve PATH to an absolute path; du -sh. Archive if a
folder and MODE ≠ public.
B. Upload.
public: ipfs_add(path, name="share:<basename>") (CLI:
ird ipfs add PATH --name share:<basename>). Folders are packed as a
browsable directory; a folder with index.html renders as a site.
password: CLI ird ipfs add PATH --encrypt --password '<pw>' --name share:<basename>
(MCP: ipfs_add(path, encrypt_password=...)).
recipient: CLI ird ipfs add PATH --encrypt-to RECIPIENT_KEY [--sign] --name share:<basename>
(MCP: ipfs_add(path, encrypt_to_public_key=...); signing needs the CLI,
and a local key from ird ipfs keys gen).
Keep the CID and the gateway URL from the result.
C. Verify. public: fetch the gateway URL, confirm the bytes (size,
or sha256sum against the original for a file). Encrypted:
ird ipfs get <CID> --decrypt -o /tmp/check with the same password/key,
compare checksums, delete the check copy.
D. Hand-off. Give me the message to send the recipient:
public: the gateway URL (…/ipfs/<CID> or …/ipfs/<CID>/<file>).
password: ird ipfs get <CID> --decrypt -o <name> plus the password
sent over a different channel.
recipient: ird ipfs get <CID> --decrypt --key <their key name> -o <name>;
if signed, mention that the CLI verifies and prints the sender.
E. Takedown. On UNPIN_AFTER (or when I say): ipfs_pins(search="share:"),
then ipfs_unpin for this share's CID. Confirm it no longer appears in
ipfs_pins and note that billing stopped.
Deliverable
CID, gateway URL, mode, size and monthly cost, the recipient message
verbatim, and the takedown date with the exact unpin command.