Skip to content

Tools Hub

lqdflying edited this page Oct 4, 2026 · 16 revisions

Tools Hub

ChatHub includes a dedicated utility workspace:

  • On desktop, select the Tools Wrench icon in the left sidebar, then choose a tool from the sub-navigation panel.
  • On mobile, select More in the bottom navigation, choose Tools, then use the menu button in the page header to switch between tools. The compact tool drawer closes after a selection.

Chat conversations also expose an Agent Skills picker beside the tool picker. Skills are user-installed instruction bundles; the picker and hidden load_skill builtin use the same lazy-loading contract described in Agent Skills.

Built-in Tools

Sandbox (chat tool)

Runs shell commands, git, Node.js, and Python in a Linux container for that conversation, not in the browser. Enable Sandbox in the assistant's tool picker. Operators deploy Sandbox (OpenSandbox) (OPENSANDBOX_SERVER_URL and OPENSANDBOX_IMAGE). If those are unset, the tool returns a configuration error and the model continues.

  • The code and its result appear inline: standard output/error and any files or plots the code produced (images render; other files download).
  • Long output is capped and marked as truncated so a runaway program can't freeze the page.
  • If a run produces nothing, a "no output" note is shown; if it fails, the error is shown instead of a blank result.
  • A run that hangs times out after 60 seconds unless SANDBOX_TIMEOUT or the model's timeout says otherwise.
  • Listing a name in packages does not install it. Install with a shell command inside the sandbox, or add the package to docker/opensandbox and rebuild the image. Missing imports fail as ordinary Python errors.
  • Attach the spreadsheet or document to the chat (paperclip). Knowledge Base-only files are not copied into the sandbox. See Sandbox (OpenSandbox) for the server, the image, and packages.
  • Graphile runs Sandbox in the background. Enabling the tool does not force the whole reply onto the connected tab. A portal-thread run uses that thread’s files, not sibling threads.

Picbed

Image and video hosting tool at /tools/picbed:

  • Upload one or more images or videos via file select, drag-and-drop, or Ctrl+V / Command+V paste
  • Videos may be up to 20 MiB, inclusive; larger videos and unsupported files are skipped while valid files in the same batch continue
  • Auto-copies successful URLs to the clipboard, one URL per line
  • Responsive media pagination (20 per page) with numbered desktop controls, compact mobile controls, direct page entry, and first/last-page jumps
  • Lightbox image preview and native inline video controls without autoplay
  • Deleting a media record requires confirmation and reports success or failure; failed items remain in the gallery
  • S3-backed storage

Picbed media and upload batches belong to the active account. Signing out or switching accounts immediately clears the visible gallery and cancels any in-progress batch before the new account loads. If an account changes after a file reaches object storage, ChatHub does not create that media record for the new account; upload the file again after the account switch finishes.

Requires S3 environment variables:

S3_ACCESS_KEY_ID=...
S3_SECRET_ACCESS_KEY=...
S3_ENDPOINT=...
S3_BUCKET=...
S3_REGION=...

API Tester

REST API client at /tools/apitest:

  • All HTTP methods (GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS)
  • Auth: None / Bearer Token / Basic Auth
  • Request headers editor, body editor with JSON formatter
  • Response viewer with status code, timing, pretty-printed JSON, raw toggle
  • Stateless — no database required

Password Generator

Utility at /tools/password for generating secure passwords.

Adding a New Tool

  1. Create src/app/[variants]/(main)/tools/<tool-name>/page.tsx
  2. Add i18n keys to src/locales/default/tools.ts + locales/en-US/tools.json + locales/zh-CN/tools.json
  3. Add DB migration SQL in packages/database/migrations/ + register in meta/_journal.json
  4. Add tRPC router in src/server/routers/lambda/ + register in lambda/index.ts
  5. Add the nav entry to src/app/[variants]/(main)/tools/_layout/useToolsNav.tsx

Clone this wiki locally