thing

io.github.unravel-team由 GitHub 帳號 unravel-team 發布v0.15.0更新於 Nov 4, 2026

Artifacts for any coding agent: a durable link with versions, diffs, and comments on the page.

概覽

AI 產生的概覽

把編碼代理產出的 HTML、Markdown、圖片與 PDF 發佈成帶版本、差異與留言的持久連結。

可以做什麼
  • 推送檔案或內嵌內容,取得可分享的持久連結與伺服器提示
  • 列出自己的成品、讀取某個版本的原始碼、查看版本歷程
  • 讀取成品上的留言與回覆
  • 讀取頁面的 Inputs 回答,並以登入使用者身分提交回答
  • 查看已安裝版本、更新狀態,以及目前推送使用的帳號與團隊
適用情境
適合代理產出報告、文件或圖片後,需要有人在瀏覽器開啟並分享給同事的情境;也適合希望頁面自帶版本歷程、留言或問卷收集,而不是散落檔案的情況。
執行需求
透過 npx(Node 18 以上)或 bunx 以 stdio 在本機執行。需要在該服務 Settings 下的 Tokens 建立 THING_TOKEN,或事先用命令列登入。THING_SERVER 為選用,用於自架執行個體,預設指向官方託管服務。需要能連線該服務的網路。
安裝前請注意
THING_TOKEN 是可代表你發佈內容的憑證,不要放進共用設定。推送會建立成品,可見範圍由 visibility 決定,預設為團隊可見,發佈前請確認 private、team、anyone-with-link 或 public。提交回答會以登入使用者身分寫入資料,並標記為來自代理。成品在最後一次推送 30 天後過期,需要保留的內容請及時匯出。

安裝

在 SourceWeft 中

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

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

其他 MCP 客戶端

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

README

@unravel-tech/thing

CLI for thing: push, version, and share artifacts (HTML pages, Markdown docs, standalone images and PDFs) from coding agents.

sh
npx -y @unravel-tech/thing push report.html

That first push opens browser approval, waits for sign-in, then resumes and prints the durable URL. Markdown, images, and PDFs work the same way. Install globally if you use it often: npm i -g @unravel-tech/thing.

Commands

CommandWhat it does
thing --version / thing versionShow the installed CLI version
thing update [--force] [--manager npm|bun]Install the latest release globally; --force runs even when the server reports this version as current
thing login [--account name] [--server url] [--no-browser]Add or refresh a named account with device-code login; defaults the name to the authenticated email
thing accountsList saved accounts and show which one this directory resolves to
thing switch <account> [--local]Change the global default account, or bind an account to the current Git repository/working directory
thing switch --clear-localRemove the account binding inherited by the current directory
thing logout [--account name] [--all] / thing whoamiRemove saved credentials / show the resolved identity and where pushes land
thing default [team] [--clear]Show or set your server-side default push target (used when no --team is given, from any machine)
thing setup claude [--remove] [--dry-run]Let Claude Code auto mode publish to thing without refusals: adds usething.ai and thing push to the autoMode trust entries in ~/.claude/settings.json, keeping Claude Code's defaults. Run it yourself (in Claude Code type ! npx -y @unravel-tech/thing@latest setup claude); --remove undoes it
thing use <team> [project]Set a local active team/project override for this machine
thing push <file.html|.md|.pdf|.png|.jpg|.gif|.webp> [--name x] [--team t] [--project p] [--visibility v] [--password p]Authenticate if needed, then push a new immutable version and print the served URL. --visibility is private (only you and people you add), team (everyone in the org, the default) or public (anyone with the link). --password lets anyone who knows it open the artifact beside team and people access
thing listList artifacts you can see; filter with --label or --search, sort with --sort created or updated and --order asc or desc, page with --limit and --offset
thing get <name> [--version n] [--output file]Read the pushed source of a version. HTML and Markdown print to stdout; PDFs and images save under their download name (never overwriting) or to --output
thing export --all [--output file] / thing export --team <slug>Download everything your account holds (account, every artifact version, your comments and Inputs answers), or a whole team as its admin, in one zip. Artifacts expire 30 days after their newest push, so keep a copy. Never overwrites a file
thing comments <name>Pull comments and replies from a viewable artifact
thing versions <name>Version history for an artifact; works for viewers and public links
thing responses <name> [--mine] [--collection c] [--history] [--csv]Read a page's Inputs answers (every respondent for publishers and editors). Each row says whether it came from the browser or an agent
thing respond <name> <collection> (--data '{json}' | --field key=value ...) [--version n]Answer a page's Inputs as the signed-in user. --field repeats and types true, false, null and numbers. Recorded as via: agent
thing rollback <name> <n>Point latest back to version n
thing open <name>Open the artifact in a browser
thing mcpRun a Model Context Protocol server over stdio (tools: server_info, push_artifact, list_artifacts, get_artifact, list_artifact_versions, list_artifact_comments, list_artifact_responses, submit_artifact_response, whoami)

<name> is an artifact name, team/slug, or a pasted link. A /v/N link pins that version and ?k= link keys are kept. A link on another host is read without your token unless your own server confirms it is the same artifact. push prints any server notes (for example an Inputs mistake) to stderr and includes them in --json.

Every command accepts --json for machine-readable output. Authenticated commands also accept --account name to use a saved account once without changing either the global default or a directory binding. An unauthenticated push --json emits newline-delimited authentication status; the final JSON object is always the push result. Use --no-login to fail fast instead of starting interactive authentication, such as in CI.

Visibility values: private, team, anyone-with-link (prints a tokened share URL), public.

Updates

Thing supports advisory and required updates published by the Thing server. An advisory update prints a rate-limited notice to stderr but lets the command continue. A required update stops normal commands with exit code 3 while keeping --help, --version, and update available. --json returns a structured CLIENT_UPDATE_REQUIRED error.

The CLI checks at most once per hour and shows the same advisory at most once per day. Set THING_NO_UPDATE_NOTICES=1 to hide advisory notices; required updates cannot be suppressed. thing update --force reinstalls the latest release even when the current version is still supported.

MCP sessions expose the installed version through the initialization handshake and the server_info tool. Advisory updates appear in MCP instructions, a log notification, and the first business-tool result. Required updates leave server_info available but stop artifact tools until Thing is updated and the MCP client is restarted.

The corresponding Thing server endpoint and enforcement middleware are specified in THING_SERVER_UPDATE_POLICY.md.

Context resolution

Accounts

Thing can keep multiple logins on one machine. Give accounts short names when you add them, list them, and switch the global default:

sh
thing login --account workthing login --account personalthing accountsthing switch work

To associate the current repository with an account, run:

sh
thing switch work --local

Inside a Git repository, this binds its root and every directory beneath it. Outside Git, it binds the current working directory and its descendants. The binding is stored in your user config—not .thing.json—so personal account names and credentials never become repository changes. A local binding wins over the global default; --account personal wins over both for one command. Use thing switch --clear-local to remove the binding.

Existing single-login config files migrate automatically to an account named default. New logins without --account use the authenticated email address as the account name.

Account selection is resolved in this order: --account → the nearest repository/directory binding → the global thing switch selection → the only saved account. THING_TOKEN and THING_SERVER still override stored credentials for CI and MCP configurations.

Workspace and project

A workspace (called a team in the API and the --team flag) holds your team's artifacts. A project groups artifacts inside a workspace and can be restricted to the people added to it; people from outside the workspace can be added to a project as guests. Push into one with --project <slug>.

Manage projects from the CLI or MCP:

thing projects --team acmething project create "Q4 launch" --team acme --restricted --brief "Ship by week 3"thing project add acme/q4-launch [email protected] --role editorthing project set acme/q4-launch --access open --archivething push index.html --team acme --project q4-launch --home   # the project's page

A project's page can be one of its artifacts. Inside it, thing.project.get() lists the project's artifacts with each reader's own access.

Which workspace a push lands in is decided in order: --team flag → .thing.json in the working directory → a local thing use override → your server-side default (thing default) → your personal space. Login no longer pins a workspace, so with none of the overrides set the server picks your default (e.g. the Unravel org for Unravel members).

MCP

Claude Code, Cursor, Codex, and anything else that speaks Model Context Protocol can publish through thing. No terminal login needed: create a token at usething.ai under Settings, then Tokens, and paste this into your client's MCP config.

json
{  "mcpServers": {    "thing": {      "command": "npx",      "args": ["-y", "@unravel-tech/thing@latest", "mcp"],      "env": { "THING_TOKEN": "paste-your-token-here" }    }  }}

On a machine that has Bun but no Node, swap npx for bunx:

json
{  "mcpServers": {    "thing": {      "command": "bunx",      "args": ["-y", "@unravel-tech/thing@latest", "mcp"],      "env": { "THING_TOKEN": "paste-your-token-here" }    }  }}

The server exposes these tools: server_info for the installed version and update status, push_artifact to publish a file or inline content and get back a link (with any server notes), list_artifacts to see what you have, get_artifact to read a version's source (text inline, PDFs and images saved to save_to), list_artifact_versions, list_artifact_comments, list_artifact_responses to read a page's Inputs answers, submit_artifact_response to answer them for the user when asked, and whoami to check which account and team you are pushing to. Every tool that takes an artifact accepts a name, team/slug, or link.

If you already ran thing login, the stored credential is used and THING_TOKEN can be left out.

Runtimes

Node >= 18 or Bun, no runtime dependencies. The thing executable launches under whichever of the two is on your PATH (Node first), so a global install works on a machine that has never installed Node:

sh
bun i -g @unravel-tech/thingthing login

來源:README.md,提交 561be34

工具

0
SourceWeft 曾在隔離沙箱中以無憑證方式啟動該軟體包一次,以列出其工具,但未能完成:伺服器未在限時內回應。

版本歷史

5
  1. v0.15.0最新Nov 4, 2026
  2. v0.12.0Oct 9, 2026
  3. v0.11.0Oct 9, 2026
  4. v0.10.0Sep 16, 2026
  5. v0.9.0Sep 16, 2026

評分

已滿足適用檢查項的 50%

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

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

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

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分