aispace について
aispace は、AI エージェントと人の間で一時的にファイルを共有するためのオープンソース CLI とエージェントスキルです。有効期限付きリンク、機械可読な出力、任意のローカル暗号化に対応し、CLI は stdio 経由で 10 個の型付き MCP ツールも提供します。
主な機能
- 01ディスクや標準入力からのストリーミングアップロード
- 02期限とダウンロード上限を設定したリンク
- 03安定した JSON 出力とエラー仕様
- 04任意のローカル age 暗号化
- 05stdio 経由の 10 個の型付き MCP ツール
活用シーン
- 01生成したレポートやアーカイブの受け渡し
- 02短期リンクを使ったファイル共有
- 03キー限定アクセスの非公開ファイルのアップロード
- 04MCP を使ったエージェント間ファイル共有の設定
MCP 対応
CLI はローカル stdio 経由で MCP サーバーを起動し、10 個の型付きツールを公開します。MCP クライアントは環境変数で渡す個別スコープの bot キーを使って接続できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @aispace-sh/cliAISPACE_KEYシークレットScoped aispace bot key (ask_...).AISPACE_URLOptional aispace service origin; defaults to https://aispace.sh.AISPACE_ALLOWED_ROOTSOptional platform path-list restricting local file access.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
aispace
AI エージェントと人間のための、安全な一時ファイル共有。
有効期限付きリンク、予測可能な JSON、任意のローカル age 暗号化に対応した、スクリプトで操作できる CLI です。
aispace.sh は、チャットで扱うには大きすぎる、構造化されている、または一時的な出力を共有するための、ボットに使いやすいファイルドロップサービスです。オープンソースのクライアントは、自動化を容易にすることを意図して設計されています。単一のバイナリ、安定した終了コード、ストリーミングアップロード、予測可能な最終行への共有 URL の出力に対応しています。
- エージェント向けに設計: 対応コマンドでの安定した JSON、文書化されたエラー、標準入力のサポート、自動化向けの明示的な非対話フラグを備えています。シークレットを含む受け渡しコマンドは、引き続き対話形式で実行されます。
- 短期間の利用を前提に設計: ファイルの有効期限、個別に設定できるリンクの有効期限、取り消し、リンクごとの任意のダウンロード上限に対応しています。
- 必要に応じてプライバシーを保護: シールドされた非同期転送では、ファイル名、ファイルメタデータ、コンテンツをローカルで暗号化します。マスターキーが aispace に送られることはありません。既存の age X25519 フローも、受信者キーを使うワークフローで引き続き利用できます。
シールド転送、エージェント ID、デバイスペアリング、アダプティブな永続ストレージ優先のインテントは、実験的な機能です。通常のアップロードと永続的な R2 ストレージも、引き続きこれらと並行して利用できます。
ホストサービスは、別途運営されています。このリポジトリに含まれるのは、クライアント、エージェントスキル、統合例です。サーバー、課金システム、デプロイ設定、顧客データは含まれていません。
60 秒で試す
最新リリースをインストールします。
curl -fsSL https://aispace.sh/install.sh | sh
aispace ダッシュボードで作成したキーを使って認証し、ファイルを保存します。
aispace login --key ask_...
aispace upload report.pdf --json
Pro アカウントでは、有効期限を個別に設定できる公開受け渡しリンクを追加できます。
aispace upload report.pdf --link --link-expires 1h --max-downloads 1
URL は最後に単独の行として出力されるため、エージェントやシェルスクリプトで簡単に取得できます。安定した機械可読レスポンスを得るには、--json を追加してください。省略したレスポンスの例:
{"file":{"id":"...","name":"report.pdf"},"link":{"url":"https://aispace.sh/d/...","expires_at":1757003600}}
その他のインストール方法:
npm install -g @aispace-sh/cli
brew install aispace-sh/tap/aispace
go install github.com/aispace-sh/aispace-client@latest
AISPACE_VERSION=v1.2.3 を指定して、シェルインストーラーのバージョンを固定できます。リリースバイナリは、amd64 と arm64 の macOS、Linux、Windows に対応しています。シェルインストーラーは macOS と Linux に対応しています。Windows では npm を使用してください。
エージェントに aispace を使わせる
このリポジトリには、再利用可能な Codex 互換スキルが含まれています。リポジトリをクローンし、スキルを個人用 Codex スキルディレクトリにリンクします。
git clone https://github.com/aispace-sh/aispace-client.git
mkdir -p ~/.codex/skills
ln -s "$PWD/aispace-client/skills/aispace" ~/.codex/skills/aispace
Codex を再起動し、レポート、アーカイブ、画像、その他の生成された成果物を渡す必要があるときは、aispace を使うよう依頼します。このスキルは、公開リンクをリクエストしない限りアカウント限定のストレージをデフォルトで使用し、有効期限は短めを優先し、暗号化 ID を認証情報として扱います。
Model Context Protocol(MCP)
ネイティブ CLI では、ローカル stdio を介して型付き MCP ツールを 10 個公開することもできます。ダッシュボードで個別スコープのボットキーを作成し、Codex を起動する環境にエクスポートして、次を追加します。
[mcp_servers.aispace]
command = "aispace"
args = ["mcp", "serve"]
env_vars = ["AISPACE_KEY", "AISPACE_URL", "AISPACE_ALLOWED_ROOTS"]
startup_timeout_sec = 10
tool_timeout_sec = 120
default_tools_approval_mode = "writes"
[mcp_servers.aispace.tools.aispace_create_link]
approval_mode = "prompt"
[mcp_servers.aispace.tools.aispace_revoke_link]
approval_mode = "prompt"
[mcp_servers.aispace.tools.aispace_delete_file]
approval_mode = "prompt"
codex mcp list を実行して、接続を確認します。同じホスト上の ChatGPT デスクトップアプリ、Codex CLI、Codex IDE 拡張機能は、この設定を共有します。キーはシークレットストアまたは注入された環境変数に保管してください。展開後の値をコミット対象のプロジェクトファイルやコマンド引数に含めないでください。Claude Code および汎用ホストの例については、docs/CLI.md を参照してください。
カスタムエージェントランタイム向けに、docs/LLM_USAGE.md にはシステムプロンプトのスニペット、OpenAI/Anthropic 互換のツールスキーマ、リファレンス Python ハンドラーが含まれています。実行可能なシェル、CI、暗号化ハンドオフのレシピについては、examples を参照してください。
一般的なワークフロー
# Upload text from stdin and return an expiring public link (Pro).
echo "hello" | aispace upload - --name note.txt --link --link-expires 1h
# Keep a file available only to this key.
aispace upload secret.txt --private
# Share ciphertext; keep the generated age identity locally.
aispace upload secret.pdf --encrypt --identity-out secret.agekey --link
# Authenticated handoff to another key on the same account—no public URL.
aispace upload notes.md --shared --json
# Sealed multi-file handoff. The URL fragment holds the local decryption secret.
aispace transfer create report.pdf charts.png --sealed --link --expires 1d --max-downloads 1
# Move that sealed transfer to a nearby browser/device with an expiring code.
aispace handoff offer "$TRANSFER_ID"
# On the receiving CLI: aispace handoff receive J7KM-PQRT
# Pin an agent and deliver without exposing a bearer decryption link.
aispace recipient add "$RECIPIENT_INVITATION"
aispace recipient verify research-agent --fingerprint "$RECIPIENT_FINGERPRINT"
aispace transfer create report.pdf --sealed --to research-agent --from my-agent --expires 7d
aispace inbox receive "$DELIVERY_ID" --yes
# Paste the link interactively, inspect its private manifest, then decrypt and verify.
aispace transfer receive
# Receive, manage, and revoke.
aispace ls --json
aispace download <file_id> --output ./file
aispace download <file_id> --output ./file --verify # check the recorded SHA-256
aispace link <file_id> --expires 30m --max-downloads 1
aispace revoke <link_id>
aispace rm <file_id>
シール済みバンドル、信頼できるエージェントの受信トレイ、デバイスのペアリング、適応型 R2 フォールバック、復元については、docs/SECURE_HANDOFFS.md を参照してください。コマンドの全リファレンスは docs/CLI.md、HTTP コントラクトは docs/API.md にあります。
upload は、--name、--expires、--content-type、--sha256、--link、--link-expires、--max-downloads、--private、--shared、--encrypt、--recipient、--identity-out を受け付けます。アップロードはディスクからストリーミングされます。暗号化アップロードでは、ローカルで age X25519 を使用し、暗号文を <name>.age として保存します。シークレット ID が API に送信されることはありません。
transfer create は aispace-sealed-v1 を使用します。AES-256-GCM 認証付きチャンクと暗号化されたマニフェストにより、複数ファイル、範囲指定での再試行、検証済みレシートに対応します。transfer receive は、プロンプト、--token-file、または AISPACE_TRANSFER_TOKEN からシークレットを受け付けます。共有システムでは、フラグメント付きの完全なリンクやトークンをプロセス引数に含めないでください。
transfer create --json は、--include-secret を明示的に指定しない限り、ベアラーレンクとトークンを省略します。シークレットを含む JSON は、ターミナルではなくリダイレクト先に出力してください。handoff encode も同様に、保護されたプロンプト、--token-file、または AISPACE_TRANSFER_TOKEN を受け付けます。
--json を指定した場合、エラーも構造化された形式のまま stderr に出力されます。upload --link --json は {"file": File, "link": ShareLink} を返します。暗号化アップロードでは、"encryption" オブジェクトも追加されます。
設定
優先順位:フラグ > 環境変数 > 設定ファイル > デフォルト。
| 設定 | フラグ | 環境変数 | ファイルキー | デフォルト |
|---|---|---|---|---|
| API キー | --key | AISPACE_KEY | key | — |
| サーバー | --url | AISPACE_URL | url | https://aispace.sh |
AISPACE_AGE_IDENTITY は、decrypt --identity-file を省略した場合の復号 ID を指定します。この値をコマンドライン引数として指定することは意図的にできません。
設定ファイル:$XDG_CONFIG_HOME/aispace/config.json(デフォルトは ~/.config/aispace/config.json)。モード 0600 で書き込まれます。他のユーザーがファイルを読み取れる場合は警告が表示されます。AISPACE_CONFIG でパスを上書きできます。
期間(--expires、--link-expires)には、Go の構文に加えて d サフィックスを使用できます:30m、24h、7d、1d12h、または秒数のみの数値。省略した場合は、サーバーのデフォルト値(ファイルは 7 日間、Pro の公開リンクは 1 時間)が使用されます。
ファイルのアクセス許可とリンク
ファイルの公開範囲によって、認証済みキーからのアクセスが制御されます。公開リンクはこれとは別のアクセス権限です。作成には Pro アカウントが必要で、URL を持っている人なら誰でも、そのファイルを利用できるようになります。
| ファイルモード | アクセスできるユーザー | ファイルの有効期間 | 公開リンクの有効期間 | ダウンロード上限 | アクセス情報が漏えいした場合の露出範囲 |
|---|---|---|---|---|---|
private | アップロードに使ったキーのみ | デフォルトで 7 日間。Free では最大 7 日間、Pro では最大 30 日間 | なし | アカウントの月間上限 | そのキーに属する非公開ファイル。削除または有効期限切れまで |
account | アカウント上のすべての有効なキー | デフォルトで 7 日間。Free では最大 7 日間、Pro では最大 30 日間 | なし | アカウントの月間上限 | アカウントで共有されるファイル。削除または有効期限切れまで |
private + 公開リンク | アップロードに使ったキーと、URL を持っている人 | リンクには Pro が必要なため最大 30 日間 | デフォルトで 1 時間。最大 30 日間で、ファイルの有効期限を超えることはありません | リンクごとに上限を設定可能 | リンクされたファイルのみ。リンクの期限切れ、取り消し、上限到達、ファイルの削除、または有効期限切れまで |
account + 公開リンク | アカウントのキーと、URL を持っている人 | リンクには Pro が必要なため最大 30 日間 | デフォルトで 1 時間。最大 30 日間で、ファイルの有効期限を超えることはありません | リンクごとに上限を設定可能 | URL からのアクセスはリンクの終了時に終わります。アカウントのキーは、ファイルの削除または有効期限切れまでアクセスできます |
| クライアント暗号化ファイル | 公開範囲によって暗号文へのアクセスが制御されます。復号できるのは age ID の所持者のみです | 選択したファイルモードと同じ制限 | リンク作成時は、Pro 専用の同じ制限が適用されます | リンクごとに上限を設定可能 | 平文が漏えいするには、暗号文と age ID の両方が必要です |
利用できる期間の構文には、30s、15m、1h、36h、7d があります。
ファイルの有効期間が終了すると、そのファイルは利用できなくなります。リンクは、期限切れ、取り消し、またはダウンロード上限への到達によって、それより早く終了する場合があります。ファイルを削除すると、認証済みキーからのアクセスと、関連するすべての公開リンクが直ちに無効になります。
終了コード
| コード | 意味 |
|---|---|
| 0 | 成功 |
| 1 | 一般エラー(ネットワークエラー、以下に記載されていない 4xx/5xx) |
| 2 | 使用方法のエラー |
| 3 | 認証エラー(401、またはキーが設定されていない) |
| 4 | クォータ/サイズのエラー(402、413) |
| 5 | レート制限(429)— 冪等な GET は Retry-After の時間(最大 30 秒)待機してから、1 回再試行します |
エラーは stderr に error: <message> (<code>) の形式で出力されます。--json を指定した場合は、代わりに {"error":{"code","message","status","details","exit_code"}} の JSON オブジェクトが stderr に出力されます。
開発
go test -race ./... && go vet ./... && test -z "$(gofmt -l .)"
go build -ldflags "-X main.version=0.0.0-dev" -o aispace .
(cd npm && npm test && npm pack --dry-run)
テストスイートではローカル HTTP フィクスチャを使用するため、aispace キーは必要ありません。コントリビューションを歓迎します。まず CONTRIBUTING.md を確認し、ROADMAP.md をチェックして、CHANGELOG.md をご覧ください。対象を絞ったバグ報告や機能提案には、リポジトリの構造化された Issue フォームを利用できます。
リリースは、手動の GitHub Actions ワークフローを通じて作成されます。GoReleaser がチェックサム付きの macOS、Linux、Windows バイナリをビルドし、Homebrew tap を更新して、@aispace-sh/cli を npm に公開します。さらに、3 つすべてのプラットフォームでインストール済みの MCP サーバーを検証し、最後に sh.aispace/mcp を公式 Registry に公開します。公開者の設定、再開可能な MCP のみの公開、リリースチェックリストについては、RELEASE.md をご覧ください。
セキュリティ
脆弱性は GitHub Security Advisories を通じて非公開で報告してください。認証情報、非公開リンク、または顧客データを含む公開 Issue は作成しないでください。docs/SECURITY.md をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。