Tenki Sandbox MCP

io.github.LuxorLabs由 GitHub 帳號 LuxorLabs 發布v0.3.1更新於 Oct 30, 2026

Disposable microVM sandboxes for AI agents: run code, read/write files, git, preview URLs.

概覽

AI 產生的概覽

為助理提供可丟棄的 Tenki Cloud 微虛擬機沙箱,用來執行程式碼、管理檔案與 git,並發布預覽網址。

可以做什麼
  • 在一次性或常駐沙箱中執行程式碼,執行指令並直接回傳輸出
  • 建立、檢視、暫停、恢復、延長、更新與終止沙箱,包含批次終止
  • 在沙箱內讀取、寫入、列出、檢視屬性、移動與刪除檔案及目錄
  • 執行 git clone、checkout、diff、log,其他 git 指令可透過 exec 執行
  • 對外開放連接埠,建立、列出、綁定與刪除公開預覽網址
  • 建立與管理快照,並檢視工作區用量與設定
適用情境
適合需要一台隔離機器來執行不可信或臨時性程式碼、測試建置,或執行想透過公開網址展示的網頁服務,而不必動用使用者自己的電腦。
執行需求
透過 npx 從 npm 套件啟動的本機 Node.js 程序,或託管的 HTTP 端點。需要 Tenki 帳號,以及 TENKI_API_KEY 或 TENKI_AUTH_TOKEN 其中之一。可用 TENKI_API_ENDPOINT 覆寫預設 API 端點。需要連線至 Tenki Cloud 的網路。
安裝前請注意
持有可執行程式碼並消耗額度的 Tenki API 金鑰,沙箱按秒計費。終止(含批次終止)不可逆,會連同沙箱檔案系統一併刪除。開放連接埠與預覽網址會把服務公開到網路。執行結果的輸出不可信。可用 TENKI_MCP_READONLY=1 或 TENKI_MCP_DISABLED_TOOLS 限制工具;HTTP 模式在非回送位址需設定 TENKI_MCP_HTTP_TOKEN。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Tenki Sandbox MCP,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

tenki-mcp — @tenkicloud/mcp

A Model Context Protocol server for Tenki Cloud. Give any agent — Claude, Codex, Cursor — a disposable microVM it can create, run code in, read and write files, run git, and expose to the web. Sandboxes boot in ~2 seconds and are billed per second.

Part of making Tenki the execution layer coding agents reach for: the agent writes code and Tenki runs it in isolation. (Tenki's Code Reviewer and Runners — AI PR review and managed CI — are separate products; this server currently exposes the Sandbox.)

"Run this Python in a fresh sandbox and tell me what it prints."        │        ▼   tenki_run_code   boots a microVM → runs it → returns stdout → tears it down

Quickstart

bash
export TENKI_API_KEY=tk_your_key_herenpx -y @tenkicloud/mcp     # speaks MCP over stdio

Nothing to clone or build. The package installs one command, tenki-mcp.

Use it in Claude Code

Connect to Tenki's hosted MCP service and sign in with your Tenki account:

bash
claude mcp add --transport http tenki https://mcp.tenki.cloud/mcpclaude mcp login tenki

Claude Code's mcp add command stores the server configuration; mcp login performs the one-time browser authorization and workspace selection.

Alternatively, run the MCP server locally with an API key:

bash
claude mcp add tenki --env TENKI_API_KEY=tk_your_key_here -- npx -y @tenkicloud/mcp

Or install it as a Claude Code plugin

The repo doubles as a plugin marketplace. This prompts for your API key on install and stores it in your OS keychain — no env var to manage:

/plugin marketplace add LuxorLabs/tenki-mcp/plugin install tenki@tenki

Use it in Claude Desktop

Add to claude_desktop_config.json:

json
{  "mcpServers": {    "tenki": {      "command": "npx",      "args": ["-y", "@tenkicloud/mcp"],      "env": { "TENKI_API_KEY": "tk_your_key_here" }    }  }}

Use it in Cursor

Add the same block to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):

json
{  "mcpServers": {    "tenki": {      "command": "npx",      "args": ["-y", "@tenkicloud/mcp"],      "env": { "TENKI_API_KEY": "tk_your_key_here" }    }  }}

Use it in Codex

The OpenAI Codex CLI reads MCP servers from ~/.codex/config.toml. Add:

toml
[mcp_servers.tenki]command = "npx"args = ["-y", "@tenkicloud/mcp"]env = { TENKI_API_KEY = "tk_your_key_here" }

Confirm it's working

After adding the server, start a fresh session so the client loads it, then ask your agent one of:

  • "Check tenki auth status." — confirms your credential was picked up.
  • "Run print(2+2) in a fresh Tenki sandbox." — a full boot → run → teardown round-trip.

If the tenki_* tools don't show up, restart the client so it re-reads its config.

No key yet? Start the server without one and ask the agent to check tenki_auth_status — it reports what to set and where. See Auth.

Run it from a clone instead

For development, or to run an unreleased change:

bash
git clone https://github.com/LuxorLabs/tenki-mcp.git && cd tenki-mcpnpm install && npm run buildTENKI_API_KEY=tk_your_key_here node dist/index.js

Substitute node /absolute/path/to/tenki-mcp/dist/index.js for the npx command in any of the configs above. See CONTRIBUTING.md for the full development loop.

Environment variables

VariableDefaultPurpose
TENKI_API_KEY—API key (tk_…). One of this or TENKI_AUTH_TOKEN is required.
TENKI_AUTH_TOKEN—Session token (ory_st_… or cookie value). Takes precedence over TENKI_API_KEY when both are set.
TENKI_API_ENDPOINThttps://api.tenki.cloudControl-plane base URL (TENKI_API_URL is an alias).
TENKI_MCP_READONLYoff1 registers only read tools (no create/run/delete/spend).
TENKI_MCP_DISABLED_TOOLS—Comma-separated tool names to skip registering.
TENKI_MCP_AUDIToff1 logs each tool call name + arg keys to stderr.
TENKI_MCP_TRANSPORTstdiohttp serves Streamable HTTP instead (see below).
PORT3000HTTP transport port.
TENKI_MCP_HTTP_HOST127.0.0.1HTTP bind host; non-loopback requires TENKI_MCP_HTTP_TOKEN.
TENKI_MCP_HTTP_TOKEN—Bearer token for the HTTP endpoint; optional on loopback, required on a non-loopback host.
TENKI_MCP_PUBLIC_URL—Public base URL for an OAuth-protected hosted server.
TENKI_MCP_OAUTH_ISSUER—OAuth authorization-server issuer. Enables delegated OAuth HTTP mode.
TENKI_MCP_OAUTH_RESOURCE<public URL>/mcpRFC 8707 resource identifier accepted in access-token audiences.
TENKI_MCP_OAUTH_SCOPEmcpRequired delegated scope.
TENKI_MCP_IDENTITY_URL—Internal Tenki Identity service endpoint used to exchange OAuth access tokens.
TENKI_MCP_IDENTITY_SERVICE_TOKEN—Service credential for the private Identity token-exchange RPC.

Tools

71 tools — all 68 public unary API methods (enforced by a CI parity audit), two workflow helpers, and tenki_auth_status. Implementation-only control-plane methods are intentionally excluded. Grouped by domain:

DomainTools
Authtenki_auth_status (which credential is configured, and does it work — the only tool available when none is)
Identitytenki_whoami
Runtenki_run_code (one-shot: boot → run shell/python/js → tear down)
Sandboxestenki_create_sandbox · tenki_get_sandbox · tenki_list_sandboxes · tenki_terminate_sandbox · tenki_pause_sandbox · tenki_resume_sandbox
Session admintenki_extend_sandbox · tenki_update_sandbox · tenki_terminate_sandboxes (bulk) · tenki_report_sandbox_activity · tenki_list_workspace_sandboxes
Exectenki_exec (stdout/stderr/exit inline)
Filestenki_read_file · tenki_write_file · tenki_list_files · tenki_stat_path · tenki_make_dir · tenki_remove_path · tenki_move_path
Gittenki_git (clone/checkout/diff/log — the API supports exactly these four; run other git commands via tenki_exec)
Ports & previewsexpose · list-exposed · unexpose · create-preview-url · open-preview · list/get/delete-preview-url · touch-preview · bind/unbind-preview-url · resolve-preview-token
Artifacts (binary transfer)tenki_get_upload_url · tenki_get_download_url (signed URLs for binary PUT/GET)
SSHtenki_update_ssh_keys · tenki_issue_ssh_cert · tenki_list_ssh_gateways
Snapshotscreate · get · list · list-session · list-workspace · list-dangling · update · delete · get-download-url
Volumescreate · get · list · update · delete · resize · attach · detach
Templatescreate · get · list · update · delete · build · cancel-build · get-build · list-active-builds
Workspacetenki_get_workspace_usage · tenki_get_workspace_settings · tenki_update_workspace_settings · tenki_get_snapshot_retention_settings · tenki_update_snapshot_retention_settings

Full per-release breakdown in CHANGELOG.md.

Auth

Set one of TENKI_API_KEY or TENKI_AUTH_TOKEN — when both are set, TENKI_AUTH_TOKEN wins. The header is chosen by token prefix: tk_… → Authorization: Bearer, ory_st_… → X-Session-Token, otherwise a session cookie. Override the endpoint with TENKI_API_ENDPOINT (default https://api.tenki.cloud).

Without a credential the server still starts, registering only tenki_auth_status — so instead of an MCP client reporting an opaque "server failed to start", the agent can call that tool and get told what to set. Ask it "check tenki auth status" any time other tools return auth errors: it reports the credential kind (API key vs session token), the endpoint, and whether a live identity probe succeeded — never the token itself. It reports status only; get a credential with tenki login or from the dashboard.

Host it over HTTP (v2.0-beta)

Besides stdio, the server speaks Streamable HTTP so it can be hosted for remote MCP clients:

bash
TENKI_MCP_TRANSPORT=http PORT=3000 TENKI_API_KEY=… npx -y @tenkicloud/mcp# → tenki-mcp running on http://127.0.0.1:3000/mcp (Streamable HTTP) [loopback only, no auth]

For a single-user deployment, HTTP mode can hold one shared TENKI_API_KEY and therefore exposes a powerful capability. By default it:

  • binds to loopback (127.0.0.1) only — set TENKI_MCP_HTTP_HOST=0.0.0.0 to expose it, but then
  • it requires a bearer token: set TENKI_MCP_HTTP_TOKEN and send Authorization: Bearer <token>. It refuses to start on a non-loopback host without one.
  • DNS-rebinding protection is on (Host-header allowlist), so a malicious web page can't drive your local server.
bash
# expose to a network safely:TENKI_MCP_TRANSPORT=http TENKI_MCP_HTTP_HOST=0.0.0.0 PORT=3000 \  TENKI_MCP_HTTP_TOKEN=$(openssl rand -hex 32) TENKI_API_KEY=… npx -y @tenkicloud/mcp

Point an HTTP-capable MCP client at /mcp. Static-key mode uses one shared TENKI_API_KEY for all sessions. Verified end-to-end (test/http-transport.test.mjs: auth gate, DNS-rebinding rejection, connect → tools/list → tool call over HTTP).

Hosted multi-tenant deployments instead use Tenki Identity's OAuth facade. The MCP server publishes RFC 9728 protected-resource metadata and exchanges each caller's access token through the private Identity service. Identity owns Hydra, validates the requested audience and scope, and issues a short-lived API delegation bound to the user, client, and workspace selected on the Tenki consent page. tenki-mcp has no Hydra Admin access and does not hold the delegation-signing secret.

How it works

Tenki's API is ConnectRPC — JSON over HTTP/1.1, not REST. Every control-plane call is POST https://api.tenki.cloud/tenki.sandbox.v1.SandboxService/{Method} with a lowerCamelCase JSON body. Per-session file I/O runs on a separate data-plane endpoint returned at create time, authenticated with a short-lived session certificate. This server owns both transports so the tools stay one-liners.

Command output: tenki_exec and tenki_run_code capture stdout/stderr by redirecting to files (sh -c '… > out 2> err') and reading them back over the data plane, so you get the output inline through a plain HTTP client.

The wire details are ported from the live-verified n8n community node.

Security

This server holds a Tenki API key and can run code + spend credits, so treat it as a capability. Full model + CSA MCP Server Top-10 mapping in SECURITY.md. Quick controls:

  • Least privilege: every tool carries MCP annotations (readOnlyHint / destructiveHint). Run TENKI_MCP_READONLY=1 for an inspection-only server (read tools only), or TENKI_MCP_DISABLED_TOOLS=tenki_run_code,… to drop specific tools.
  • HTTP transport is loopback-only by default and requires a bearer token to expose to a network (see Host it over HTTP).
  • Audit: TENKI_MCP_AUDIT=1 logs each tool call's name to stderr.
  • Untrusted output: tenki_run_code/tenki_exec/tenki_read_file return output from untrusted code — clients should treat tool results as data, not instructions.

Report vulnerabilities via a private security advisory, not a public issue.

Related

License

MIT

來源:README.md,提交 8199be4

工具

71

tenki_whoami

Return the identity and workspaces for the current API key. Cheap credential test.

無需輸入參數。

tenki_run_code

Boot a throwaway microVM, run a snippet (shell/python/javascript), return its stdout/stderr/exit code, and tear the sandbox down. Cost-guarded and self-terminating. Use this for one-shot execution when you don't need a persistent sandbox. Output over ~64KB per stream is truncated head+tail — and the sandbox is gone, so for large output use tenki_create_sandbox + tenki_exec and page through the retained file.

輸入參數envcode必填language必填timeout_seconds

tenki_create_sandbox

Create a persistent sandbox microVM, optionally from a snapshot or template image. Returns the session (id, state) and its data-plane endpoint. Boots in ~2s. Use tenki_exec / tenki_read_file / tenki_write_file against the returned session_id.

輸入參數envnametagsimagecpu_coresmemory_mbwait_readysnapshot_iddisk_size_gbworkspace_idallow_inboundallow_outbound另有 3 個

tenki_get_sandbox

Fetch a sandbox's current state and metadata.

輸入參數session_id必填

tenki_list_sandboxes

List sandboxes for the workspace.

輸入參數page_sizepage_tokeninclude_terminated

tenki_terminate_sandbox

Terminate (destroy) a sandbox. The microVM and its filesystem are gone after this.

輸入參數session_id必填

tenki_pause_sandbox

Pause a sandbox (snapshot + suspend) so it can be resumed later.

輸入參數session_id必填

tenki_resume_sandbox

Resume a previously paused sandbox.

輸入參數session_id必填

tenki_extend_sandbox

Extend a running sandbox's wall-clock lifetime by N seconds so it isn't auto-terminated at its max-duration cap.

輸入參數session_id必填additional_duration_seconds必填

tenki_update_sandbox

Update mutable fields on an existing sandbox — its name, tags, idle timeout, or max duration.

輸入參數nametagssession_id必填idle_timeout_minutesmax_duration_seconds

tenki_terminate_sandboxes

Terminate MULTIPLE sandboxes in one call (bulk). IRREVERSIBLE — every listed sandbox and its filesystem is destroyed. Use tenki_terminate_sandbox for a single one.

輸入參數session_ids必填

tenki_report_sandbox_activity

Report client-side activity on a sandbox to reset its idle timer and keep it from being reaped as idle (a keep-alive heartbeat).

輸入參數session_id必填

tenki_list_workspace_sandboxes

List every sandbox belonging to a specific workspace (defaults to the API key's workspace) — useful for spotting leaked, still-billing sandboxes across the workspace.

輸入參數page_sizepage_tokenworkspace_idinclude_terminated

tenki_exec

Run a command in an existing sandbox and return stdout, stderr, and exit code inline. Streams over max_output_bytes (default 64KB) come back as a head+tail preview with the full output retained at stdoutPath/stderrPath in the sandbox.

輸入參數cwdenvargscommand必填session_id必填timeout_secondsmax_output_bytes

tenki_read_file

Read a UTF-8 text file from a sandbox (paths under /home/tenki).

輸入參數path必填session_id必填

tenki_write_file

Write a UTF-8 text file to a sandbox (paths under /home/tenki).

輸入參數path必填content必填session_id必填

tenki_list_files

List a directory in a sandbox, including dotfiles (.git, .env, .gitignore) by default — set include_hidden false to omit them.

輸入參數path必填session_id必填include_hidden

tenki_stat_path

Get metadata (size, mode, type, timestamps) for a file or directory in a sandbox. Use to check whether a path exists or inspect it before reading/removing.

輸入參數path必填session_id必填

tenki_make_dir

Create a directory in a sandbox. Set recursive to also create any missing parent directories (mkdir -p).

輸入參數path必填recursivesession_id必填

tenki_remove_path

Delete a file or directory in a sandbox. Set recursive to remove a non-empty directory and its contents (rm -r).

輸入參數path必填recursivesession_id必填

tenki_move_path

Move or rename a file or directory within a sandbox. Both paths are under /home/tenki.

輸入參數to必填from必填session_id必填

tenki_git

Run a git operation in a sandbox. Only clone, checkout, diff, and log are supported by the API — for any other git command (status, add, commit, push, ...) use tenki_exec with `git ...`. clone arg keys: repo (required, the URL), branch?, depth?, directory?. CAVEAT (live-verified): checkout/diff/log run in the session's working directory (/home/tenki), which is not a repository and has no directory arg — so on a repo cloned into a subdirectory they fail with 'not a git repository'. Use tenki_exec with `git -C <directory> ...` instead (e.g. `git -C /home/tenki/hw log -n 2`). For reference, their arg keys are — checkout: ref (required), create? ('true' = -b); diff: range? or base?+head?, path?; log: max_count?, range?, path?.

輸入參數argsoperation必填session_id必填

tenki_expose_port

Expose a port from a sandbox and get a public preview URL. Useful when an agent starts a web server it wants to show.

輸入參數port必填slugsession_id必填

tenki_list_exposed_ports

List the ports currently exposed from a sandbox.

輸入參數session_id必填

tenki_unexpose_port

Remove an inbound port exposure from a sandbox, taking its public URL/preview offline. Use this to un-publish a port previously exposed with tenki_expose_port.

輸入參數port必填session_id必填

tenki_create_preview_url

Create a shareable public preview URL for a port in a sandbox. The sandbox must have inbound networking enabled (create it with allow_inbound).

輸入參數port必填slug必填expires_atsession_id必填

tenki_open_preview

Open a viewer-token-gated (AUTHENTICATED-mode) preview. USE tenki_expose_port OR tenki_create_preview_url INSTEAD for an ordinary web server: for any port other than the web terminal (7681) the API deliberately returns a non-regional fallback host that currently has no edge route, so the URL 404s (live-verified). The returned viewerToken does resolve via tenki_resolve_preview_token; only the URL is unreachable. Requires allow_inbound.

輸入參數port必填expires_atsession_id必填

tenki_list_preview_urls

List the workspace's preview URLs, newest page first. Pass session_id to keep only the ones bound to that sandbox (filtered here, not server-side — so it applies to the page you fetched; raise page_size or follow next_page_token to widen it). Results are paginated: a nextPageToken in the response means more pages exist.

輸入參數page_sizepage_tokensession_idworkspace_id

tenki_get_preview_url

Fetch a specific preview URL's details by id.

輸入參數preview_url_id必填

tenki_delete_preview_url

Delete a preview URL by id, taking it permanently offline.

輸入參數preview_url_id必填

tenki_touch_preview

Refresh (keep-alive) a live preview by its preview token so it isn't torn down as idle.

輸入參數preview_token必填

tenki_bind_preview_url

Bind a named preview URL to a sandbox session and port (advanced routing).

輸入參數port必填session_id必填preview_url_id必填

tenki_unbind_preview_url

Unbind a named preview URL from its current session/port (advanced routing).

輸入參數preview_url_id必填

tenki_resolve_preview_token

Resolve a preview token to the sandbox/port it points at (advanced).

輸入參數token必填

tenki_create_snapshot

Capture a running sandbox's disk and memory as a reusable snapshot (attached volumes are NOT captured); boot a new sandbox from it later with tenki_create_sandbox + snapshot_id.

輸入參數nameexpires_atsession_id必填store_raw_image

tenki_get_snapshot

Fetch one snapshot's status and metadata by ID.

輸入參數snapshot_id必填

tenki_list_snapshots

List the saved snapshots for the workspace (owner inferred from the API key).

輸入參數page_sizepage_token

tenki_list_session_snapshots

List the snapshots captured from a specific sandbox session.

輸入參數page_sizepage_tokensession_id必填

tenki_list_dangling_snapshots

List dangling snapshots — those whose source session no longer exists — for the workspace, useful for cleanup.

輸入參數page_sizepage_token

tenki_update_snapshot

Update a snapshot's mutable metadata (name and/or expiry).

輸入參數nameexpires_atsnapshot_id必填

tenki_delete_snapshot

Permanently delete a snapshot by ID.

輸入參數snapshot_id必填

tenki_get_snapshot_download_url

Get a short-lived, pre-signed URL to download a snapshot's raw disk image (requires the snapshot to have been created with store_raw_image).

輸入參數snapshot_id必填

tenki_list_workspace_snapshots

List all snapshots in a workspace (defaults to the key's first workspace). Supports pagination.

輸入參數page_sizepage_tokenworkspace_id

tenki_create_volume

Create a workspace-scoped persistent volume — durable block storage that survives sandbox teardown. Defaults the workspace to the API key's first; override with workspace_id.

輸入參數name必填size_bytes必填workspace_id

tenki_get_volume

Fetch a single volume's metadata and current state by its id.

輸入參數volume_id必填

tenki_list_volumes

List persistent volumes in a workspace (defaults to the key's first workspace). Supports pagination.

輸入參數page_sizepage_tokenworkspace_id

tenki_update_volume

Rename a volume (update its human-readable name). To change a volume's size use tenki_resize_volume instead.

輸入參數name必填volume_id必填

tenki_delete_volume

Permanently delete a volume and destroy its data. Fails with VolumeInUse if the volume is still attached to a session — detach it first.

輸入參數volume_id必填

tenki_resize_volume

Grow a volume to a new size in bytes (1 MiB … 100 GiB). Volumes can grow but not shrink.

輸入參數volume_id必填size_bytes必填

tenki_attach_volume

Mount a volume into a running sandbox at an absolute path. Set read_only to mount without write access.

輸入參數read_onlyvolume_id必填mount_path必填session_id必填

tenki_detach_volume

Unmount a volume from a sandbox session.

輸入參數volume_id必填session_id必填

tenki_create_template

Create a custom-image template (a reusable sandbox-image spec: base image + setup script + default resources). Build it into a bootable image later with tenki_build_template. NOTE: only a TYPED template (created with builder_spec, no legacy fields) can build a named, publishable image (image_name) that tenki_create_sandbox boots via its `image` arg.

輸入參數name必填tagsenv_varscpu_coresmemory_mbstart_cmdbuilder_specdisk_size_gbparent_imagesetup_scriptworkspace_idbase_image_id另有 1 個

tenki_get_template

Retrieve one template by ID.

輸入參數template_id必填

tenki_list_templates

List templates for the workspace, optionally filtered by tags.

輸入參數tagspage_sizepage_tokenworkspace_id

tenki_update_template

Update mutable fields on a template. Only the fields you provide are changed; pass clear_tags to remove all tags.

輸入參數nametagsenv_varscpu_coresmemory_mbstart_cmdclear_tagstemplate_id必填builder_specdisk_size_gbsetup_scriptbase_image_id

tenki_delete_template

Delete a template by ID. Pass force to delete even when builds or dependents exist.

輸入參數forcetemplate_id必填

tenki_build_template

Trigger a build for a template, producing a bootable image. Returns the created build — poll it with tenki_get_template_build until READY; the ready build's imageDigestRef is what tenki_create_sandbox's `image` arg takes.

輸入參數build_envimage_nametemplate_id必填build_secretspublish_raw_image

tenki_cancel_template_build

Cancel an in-progress template build by its build ID.

輸入參數build_id必填

tenki_get_template_build

Retrieve one template build by its build ID (state, progress, and result image). A READY build's imageDigestRef is the reference tenki_create_sandbox's `image` arg takes.

輸入參數build_id必填

tenki_list_active_template_builds

List the currently active (in-progress) builds for a given template.

輸入參數template_id必填

tenki_get_workspace_usage

Get per-second sandbox billing and usage figures for a workspace — use this for cost visibility across all of the workspace's sandboxes.

輸入參數workspace_id

tenki_get_workspace_settings

Read a workspace's sandbox quotas and retention policy: max snapshots/templates/volumes/total bytes, max concurrent and sticky sessions, max preview URLs, and the pause/snapshot retention periods. These are workspace limits — there are no per-session defaults (idle timeout and max duration are set per sandbox at creation).

輸入參數workspace_id

tenki_update_workspace_settings

Update a workspace's sandbox quotas and retention periods. Only the fields you pass change. Each quota has a matching clear_* flag to remove the override and fall back to the platform default; pass the value OR its clear flag, not both. There are no per-session defaults here — idle timeout and max duration are set per sandbox at creation.

輸入參數max_volumesworkspace_idmax_snapshotsmax_templatesmax_total_bytesmax_preview_urlsmax_sticky_sessionspause_retention_daysclear_pause_retentionmax_concurrent_sessionssnapshot_retention_daysclear_snapshot_retention

tenki_get_snapshot_retention_settings

Get the workspace's pause- and snapshot-retention periods. DEPRECATED upstream: this RPC is marked deprecated in the API — tenki_get_workspace_settings returns the same retention fields alongside the quotas. An empty response means no retention override, i.e. kept indefinitely.

輸入參數workspace_id

tenki_update_snapshot_retention_settings

Update the workspace's snapshot-retention policy: how long snapshots are kept before automatic cleanup. Pass retention_days to set it, or clear_retention to keep snapshots indefinitely (the unset state) — exactly one of the two. DEPRECATED upstream: prefer tenki_update_workspace_settings, which sets the same retention (and pause retention) alongside the quotas.

輸入參數workspace_idretention_daysclear_retention

tenki_get_upload_url

Get a short-lived signed URL to upload (HTTP PUT) a binary file to a path inside a sandbox. Use for non-text payloads too large or binary for tenki_write_file.

輸入參數path必填session_id必填content_type

tenki_get_download_url

Get a short-lived signed URL to download (HTTP GET) a command artifact from a sandbox by its artifact id (e.g. a command's stdout/stderr artifact). Note: the API supports download-by-artifact-id only, not download-by-path.

輸入參數session_id必填artifact_id必填

tenki_update_ssh_keys

Set the SSH authorized public keys on a running sandbox, enabling direct SSH access for the given keys.

輸入參數session_id必填public_keys必填

tenki_issue_ssh_cert

Issue a short-lived SSH certificate for a public key, authorizing SSH access to a sandbox via the SSH gateway.

輸入參數public_key必填session_id必填

tenki_list_ssh_gateways

List the currently active SSH gateways for the workspace.

輸入參數workspace_id

tenki_auth_status

Report whether the server has a usable Tenki credential, which kind (API key vs OAuth session token), and the endpoint it targets — verified with a live identity probe. Call this first when other tools fail with auth errors, or when this is the only tool available (which means no credential is configured). Reports status only; it does not log in and never returns the token.

無需輸入參數。

版本歷史

3
  1. v0.3.1最新Oct 21, 2026
  2. v0.3.0Sep 17, 2026
  3. v0.2.0Sep 16, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分