Install
openclaw skills install @aispace-sh/aispaceSecure storage, sealed delivery, and agent handoffs
openclaw skills install @aispace-sh/aispaceUse aispace to exchange temporary artifacts while keeping every action within the files, keys,
services, and recipients the user placed in scope.
aispace version if client availability or compatibility is uncertain.aispace whoami before acting. If authentication is
absent, ask the user to run aispace login or configure AISPACE_KEY; never ask them to paste a
bot key into chat. Public-link and sealed-link downloads do not require a bot key.aispace quota --json. Respect returned limits; do not
retry quota or monthly-cap failures.--url, AISPACE_URL, or config when a self-hosted origin is
involved. Never change the configured service merely to make an untrusted link, token, ticket,
invitation, or identity record pass origin validation.| Need | Workflow | Important boundary |
|---|---|---|
| Keep a file for this key/account | aispace upload | Service can see ordinary file metadata and bytes |
| Give anyone an expiring raw download | upload --link | Public bearer link; Pro plan required |
| Encrypt one file to an age recipient | upload --encrypt | Separate legacy age flow; recipient must already have the identity |
| Send an encrypted bundle by bearer link | transfer create --sealed --link | Filenames, metadata, hashes, and bytes are encrypted locally |
| Deliver to a known offline agent | transfer create --to ALIAS | Requires a pinned recipient and its authenticated inbox |
| Move an existing sealed transfer nearby | handoff offer / handoff receive | Five-minute one-receiver rendezvous; sender stays online |
| Express a live-transport preference | --transport adaptive | Current client still uploads durably to R2 immediately |
Read references/secure-workflows.md before using sealed delivery, identity/trust, inbox receipts, handoff, recovery, adaptive transport, or their self-hosted feature flags.
Default to authenticated storage without a public link:
aispace upload PATH --json
producer | aispace upload - --name result.json --json
Uploads inherit the account key-sharing policy. Use --private when only the uploading key may
read the file, or --shared to make it readable by sibling keys. Neither creates public access.
Another key on the account can use the file ID with aispace ls --json and:
aispace download FILE_ID --output PATH
Only add --link when the user asks for public access. Check .account.plan in
aispace quota --json; public links require Pro. Prefer a short lifetime and use a distinct link
per recipient:
aispace upload PATH --link --link-expires 1h --max-downloads 1 --json
Report the effective expiry and cap returned by the service, not just the requested values.
upload --encrypt is a single-file age X25519 workflow, not a sealed transfer, trusted inbox,
receipt, or device-pairing protocol. Encrypt to a recipient the receiver already controls:
aispace upload PATH --encrypt --recipient 'age1...' --shared --json
If generating a one-time identity, save it locally rather than printing it:
aispace upload PATH --encrypt --identity-out PATH.agekey --json
The identity file is mode 0600 and never reaches the service. Never upload, log, commit, or quote
an AGE-SECRET-KEY-.... Losing it makes the ciphertext unrecoverable; possessing both ciphertext
and identity permits decryption even after revocation. Encryption verifies ciphertext integrity,
not sender identity.
Receive with the identity in a local file:
aispace decrypt SOURCE --identity-file PATH.agekey --output OUTPUT --json
Do not use partial plaintext after an authentication failure. Verify the durable destination before deleting ciphertext or an identity, and delete only when explicitly authorized.
aispace info FILE_ID --json, aispace ls --json, aispace links FILE_ID --json.aispace download FILE_ID --output PATH; add --verify when downstream work will trust
the bytes. It performs one extra metadata request and fails closed if no server digest is present.aispace link FILE_ID --expires 1h --json.aispace revoke LINK_ID.aispace rm FILE_ID.Sibling keys can read account-shared files but cannot perform owner-only link or deletion actions. Treat revoke and delete as state changes: do them only when requested or explicitly included in the workflow. Expiry, revocation, and deletion cannot recall bytes already downloaded.
0600 files, or secret environment variables to bearer secrets in
process arguments. Keep secrets out of ordinary JSON output, logs, screenshots, query strings,
and shell history.processed receipt with proof that later work was correct.Return the artifact or transfer ID, selected workflow, whether client-side encryption was used, effective expiry, and any download cap. Return a public URL only when one was deliberately created. When a local identity or owner ticket was created, return its path but never its contents. For adaptive requests, report the actual selected transport and durability rather than implying a live path was used.