Secure temporary file sharing for AI agents and humans

Sep 08, 2026 06:59 AM - 1 week ago 6

aispace logo

Secure impermanent record sharing for AI agents and humans.
A scriptable CLI pinch expiring links, predictable JSON, and optional section property encryption.

Website · Documentation

Release Go CI Go 1.26+ MIT license

Example terminal convention uploading a study and receiving an expiring aispace link

aispace.sh is simply a bot-friendly record driblet for outputs that are excessively large, structured, aliases impermanent for chat. The open-source customer is deliberately easy to automate: one binary, unchangeable exit codes, streaming uploads, and stock URLs printed connected a predictable last line.

  • Built for agents: nonstop JSON output, documented errors, stdin support, and nary interactive prompts successful automated flows.
  • Short-lived by design: record expiration, separately expiring links, revocation, and optional per-link download caps.
  • Private erstwhile needed: authenticated relationship handoffs and section property X25519 encryption; the decryption personality ne'er reaches aispace.

The hosted work is operated separately. This repository contains the client, supplier skill, and integration examples—not the server, billing system, deployment configuration, aliases customer data.

Install the latest release:

curl -fsSL https://aispace.sh/install.sh | sh

Authenticate pinch a cardinal created successful the aispace dashboard, past shop a file:

aispace login --key ask_... aispace upload report.pdf --json

On a Pro account, adhd a separately expiring nationalist handoff:

aispace upload report.pdf --link --link-expires 1h --max-downloads 1

The URL is printed past connected its ain line, making it easy for an supplier aliases ammunition book to capture. Add --json for a unchangeable machine-readable response. An abridged consequence looks like:

{"file":{"id":"...","name":"report.pdf"},"link":{"url":"https://aispace.sh/d/...","expires_at":1757003600}}

Other installation channels:

npm instal -g @aispace-sh/cli brew instal aispace-sh/tap/aispace go instal github.com/aispace-sh/aispace-client@latest

Pin the ammunition installer pinch AISPACE_VERSION=v1.2.3. Release binaries support macOS, Linux, and Windows connected amd64 and arm64. The ammunition installer supports macOS and Linux; usage npm connected Windows.


The repository includes a reusable Codex-compatible skill. Clone the repository and nexus the skill into your individual Codex skills directory:

git clone https://github.com/aispace-sh/aispace-client.git mkdir -p ~/.codex/skills ln -s "$PWD/aispace-client/skills/aispace" ~/.codex/skills/aispace

Restart Codex, past inquire it to usage aispace erstwhile it needs to manus you a report, archive, image, or other generated artifact. The accomplishment defaults to account-private retention unless you petition a public link, prefers short expirations, and treats encryption identities arsenic credentials.

For civilization supplier runtimes, docs/LLM_USAGE.md includes a system-prompt snippet, OpenAI/Anthropic-compatible instrumentality schemas, and a reference Python handler. See examples for runnable shell, CI, and encrypted-handoff recipes.

# Upload matter from stdin and return an expiring nationalist nexus (Pro). echo "hello" | aispace upload - --name note.txt --link --link-expires 1h # Keep a record disposable only to this key. aispace upload secret.txt --private # Share ciphertext; support the generated property personality locally. aispace upload secret.pdf --encrypt --identity-out secret.agekey --link # Authenticated handoff to different cardinal connected the aforesaid account—no nationalist URL. aispace upload notes.md --shared --json # Receive, manage, and revoke. aispace ls --json aispace download <file_id> --output ./file aispace download <file_id> --output ./file --verify # cheque the recorded SHA-256 aispace nexus <file_id> --expires 30m --max-downloads 1 aispace revoke <link_id> aispace rm <file_id>

The complete bid reference is successful docs/CLI.md; the HTTP statement is in docs/API.md.

upload accepts --name, --expires, --content-type, --sha256, --link, --link-expires, --max-downloads, --private, --shared, --encrypt, --recipient, and --identity-out. Uploads watercourse from disk. Encrypted uploads usage property X25519 locally and shop ciphertext as <name>.age; the concealed personality is ne'er sent to the API.

With --json, errors besides stay system and are written to stderr. upload --link --json returns {"file": File, "link": ShareLink}; encrypted uploads adhd an "encryption" object.

Precedence: emblem > situation > config record > default.

Setting Flag Env File key Default
API key --key AISPACE_KEY key
Server --url AISPACE_URL url https://aispace.sh

AISPACE_AGE_IDENTITY supplies a decryption personality erstwhile decrypt --identity-file is omitted. It is deliberately not accepted arsenic a command-line value.

Config file: $XDG_CONFIG_HOME/aispace/config.json (default ~/.config/aispace/config.json), written with mode 0600. A informing is printed if the record is readable by others. AISPACE_CONFIG overrides the path.

Durations (--expires, --link-expires) judge Go syntax positive a d suffix: 30m, 24h, 7d, 1d12h, or a bare number of seconds. Omitting them uses the server defaults (7 days for files, 1 hr for links).

File permissions and links

File visibility controls authenticated cardinal access. A nationalist nexus is simply a abstracted capability: creating one requires a Pro relationship and makes that 1 record disposable to anyone holding the URL.

File mode Who tin entree it? File lifetime Public-link lifetime Download cap Exposure if entree leaks
private Uploading cardinal only 7 days by default; maximum 7 days onor 30 days connected Pro None Account monthly limit Private files belonging to that key, until deletion aliases expiry
account Every progressive cardinal connected the account 7 days by default; maximum 7 days onor 30 days connected Pro None Account monthly limit Account-shared files, until deletion aliases expiry
private + nationalist link Uploading cardinal and anyone pinch the URL Maximum 30 days because links require Pro 1 hr by default; maximum 30 days and ne'er beyond record expiry Optional per-link cap Only the linked file, until nexus expiry, revocation, exhaustion, record deletion, aliases record expiry
account + nationalist link Account keys and anyone pinch the URL Maximum 30 days because links require Pro 1 hr by default; maximum 30 days and ne'er beyond record expiry Optional per-link cap URL entree ends pinch the link; relationship keys clasp entree until record deletion aliases expiry
Client-encrypted file Visibility controls ciphertext access; only property personality holders tin decrypt it Same limits arsenic the selected record mode Same Pro-only limits erstwhile a nexus is created Optional per-link cap Plaintext vulnerability requires some the ciphertext and the property identity

Available long syntax includes 30s, 15m, 1h, 36h, and 7d.

A record becomes unavailable erstwhile its record life ends. A nexus tin extremity sooner because it expired, was revoked, aliases reached its download cap. Deleting the record instantly ends authenticated key access and each associated nationalist link.

Code Meaning
0 success
1 generic correction (network, 4xx/5xx not listed below)
2 usage error
3 authentication (401, aliases nary cardinal configured)
4 quota / size (402, 413)
5 rate constricted (429) — idempotent GETs slumber Retry-After (max 30s) and retry once

Errors spell to stderr arsenic error: <message> (<code>); pinch --json they are a JSON object {"error":{"code","message","status","details","exit_code"}} connected stderr instead.

go test -race ./... && spell vet ./... && test -z "$(gofmt -l .)" go build -ldflags "-X main.version=0.0.0-dev" -o aispace . (cd npm && npm test && npm battalion --dry-run)

The trial suite uses section HTTP fixtures and does not require an aispace key. Contributions are welcome—start pinch CONTRIBUTING.md, cheque the ROADMAP.md, and review the CHANGELOG.md. Focused bug reports and characteristic proposals tin usage the repository's system rumor forms.

Releases are trim done the manual GitHub Actions workflow. GoReleaser builds checksummed macOS, Linux, and Windows binaries, updates the Homebrew tap, and publishes @aispace-sh/cli to npm. See RELEASE.md for patient configuration and the merchandise checklist.

Please study vulnerabilities privately done GitHub Security Advisories. Do not unfastened a public issue containing a credential, backstage link, aliases customer data. See docs/SECURITY.md.

More