English | ะ ัััะบะธะน | ไธญๆ
TOOL HUB is a high-performance, self-hosted, open-source platform for creating, orchestrating, federating, and securely executing tools for AI agents of any kind.
Stop hardcoding functions into system prompts and overloading model context windows with hundreds of API schemas. TOOL HUB provides agents with a structured, distributed skill file system featuring on-the-fly tree navigation and a unified interaction contract.
ToolHub works out-of-the-box with the open-source ๐งช lab (labstudio.tech) web client (GitHub Repo) โ an ultra-lightweight, serverless LLM workspace:
| Criterion | ToolHub | MCPJungle / MCPHub (typical MCP gateway) |
|---|---|---|
| Core approach | Execution engine: turns any script (Bun, Python, Go, Bash, etc.) into a tool on the fly | Proxy registry: registers pre-built MCP servers and grants access to them |
| Creating a tool | Write a script โ it instantly becomes an agent tool | Requires an already-built MCP server implementing the protocol |
| Navigation | Hierarchical folder tree (listTools("/system")) |
Flat list of registered servers/tools, grouped via Tool Groups |
| Federation | Infinitely nested REMOTE nodes (hub โ hub โ hub) | Single layer: client โ gateway โ servers, no recursive nesting |
| MCP integration | Supports MCP as one category type (Stateless + Stateful Pool) | MCP is the only supported format |
| MCP โ native tool conversion | Yes (MCP Promote) | Not available |
| IDE integration | Yes (Sublime Merge diff, replace-literal, native Ctrl+Z) | Not available |
| Access control | Tool toggles in admin panel, two password tiers (agent/admin) | ACL/RBAC, Tool Groups, per-client tokens (in enterprise mode) |
- Zero Docker Needed: Written in Bun, running code directly in isolated OS temp workspaces. Runs effortlessly on Raspberry Pi, lightweight VPS, or bare-metal servers. (Containerization/VM wrappers can still be attached on the runner layer).
- Language Agnostic: Turn any script in Bun, Node.js, Python, Go, Bash, PHP, Deno, C++ into an AI tool. If a command runs in a terminal, it becomes an agent skill.
- Strict Hierarchical Navigation: Tools are organized as a filesystem folder tree. Models browse categories via
listTools(), select the target tool, and execute it viacallTool(). - Infinite Federation: Connect ToolHub instances into nested tree networks with automated path normalization and cycle protection.
- Dual-Mode MCP Engine: Support for Model Context Protocol (MCP) in standard Stdio spawn mode and Stateful Persistent Pools for memory-heavy sessions (Puppeteer, SSH, databases).
โโโโโโโโโโโโโโโโโโโโโโโโโโ
โ AI AGENT / SDK CLIENTโ
โโโโโโโโโโโโโฌโโโโโโโโโโโโโ
โ HTTP Requests
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ TOOL HUB CORE SYSTEM โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Fastify Router & Auth โ โ
โ โ โข Agent Auth (x-agent-password) โข Admin Auth (x-admin-password) โ โ
โ โโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ โ
โ โผ โผ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โ โ Agent API โ โ Admin API โ โ
โ โ (/*) โ โ (/admin/api/*) โ
โ โโโโโโโโฌโโโโโโโโ โโโโโโโโฌโโโโโโโโ โ
โ โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโ โ
โ โผ โ
โ UNIFIED ROUTER ENGINE โ
โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โผ โผ โผ โ
โ โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโ โ
โ โ LOCAL โ โ REMOTE โ โ MCP โ โ
โ โโโโโโฌโโโโโ โโโโโโฌโโโโโ โโโโโโฌโโโโโ โ
โ โ โ โ โ
โ โผ โผ โผ โ
โ Workspace HubSDK Proxy MCP Engine โ
โ Execution (Infinite Tree) โโโโโโโโโโดโโโโโโโโโ โ
โ (Bun/Py/Go...) โผ โผ โ
โ Stateless Stateful Pool โ
โ (Stdio Spawn) (Persistent PID) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
1. Workspace Isolation โ 2. Injection โ 3. Build/Install โ 4. Run & Telemetry
(/tmp/hub_run_xxx/) (Code & Deps) (installCmd) (runCmd + ENV)
- Workspace Isolation: Creates a dedicated temp directory (
/tmp/hub_run_<timestamp>_<hash>). - File Injection: Injects source into
codeFileNameand dependencies intodepFileName. - Payload Passing: Injects parameters into
input.jsonand mirrors each key asINPUT_<KEY_NAME>environment variables. - Dependency Installation: Runs
installCmd(e.g.pip install -r requirements.txt) if dependencies exist. - Execution & Telemetry: Executes
runCmdwith timeout controls, reads output fromoutput.jsonorstdout, logs execution metrics into Audit Logs. - Workspace Purge: Completely wipes the isolated temp directory.
- Atomic AST Edits (
replace-literal): AI targets exact line replacements in ~2ms with zero token waste. - Sublime Merge Integration: Real-time diff preview inside your editor; accept/reject changes in one click.
- Native Undo Stack: AI modifications integrate with native
Ctrl+Zundo history.
- Skill Portability: Export folders, schemas, and runners into
.toolpackbundles. - Revision Journal: Automatic snapshots on every edit with one-click rollbacks.
| Type | Purpose | Operation |
|---|---|---|
LOCAL |
Native tool workspace | Executes scripts locally through configured runners. |
REMOTE |
ToolHub proxy tunnel | Recursive gateway to remote nodes via HubSDK. |
MCP |
External MCP server | Stdio-driven Model Context Protocol server. |
-
Stateless MCP (Stdio): Full lifecycle per call:
spawn$\rightarrow$ initialize$\rightarrow$ tools/call$\rightarrow$ exit. -
Stateful MCP Pool (
mcpIsStateful): Keeps processes alive in memory for complex sessions (Puppeteer, SSH). Hot calls execute in 10โ30ms. Auto-terminates after 5 minutes of idle (TTL=300s) with auto-recovery on crash. - MCP Promote: One-click promotion of remote MCP definitions into editable native database tools.
- Deep Nesting: Server A connects to Server B, which links to Server C, exposed as a unified path (
/office/home/lights/turn_on). - Cycle Protection: Graph analysis prevents cyclic recursive traversal loops.
- Transparent Routing:
HubSDKhandles path normalization and credential forwarding automatically.
<hub>listTools("/system")</hub><hub>callTool("/sublime/replace-literal", {
"find": "const PORT = 3000;",
"replace": "const PORT = 8080;"
})</hub>- Agent Security (
x-agent-password): Protects skill discovery and execution routes (GET /*,POST /*). - Admin Studio Security (
x-admin-password): Protects management APIs and web console (/admin/*).
# 1. Clone repository
git clone https://github.com/Talos-Popcorn/toolhub.git
cd toolhub
# 2. Install dependencies
bun install
# 3. Push Prisma schema to database
bun run db:push
# 4. Interactive Installer & Seed
# (Prompt language: EN/RU/ZH, custom admin/agent passwords)
bun run db:seed
# Non-interactive / CI mode:
# bun run prisma/seed.ts --lang=en --admin-pass=admin --agent-pass=123
# 5. Start development servers
bun run dev- Web Console:
http://localhost:5173/admin/(or port3000in production) - Swagger Docs:
http://localhost:3000/docs(Available only inbun run devmode) - Default Admin Password:
admin(or chosen during seed) - Default Agent Password:
123(or chosen during seed)
import { HubSDK } from './SDK/JS/sdk';
const hub = new HubSDK('http://localhost:3000', '123');
async function runAgentLoop(userQuery: string) {
const systemPrompt = await hub.getSmartPrompt();
const messages = [
{ role: 'system', content: systemPrompt },
{ role: 'user', content: userQuery }
];
let aiResponse = await llm.generate(messages);
const action = await hub.processAgentResponse(aiResponse);
if (action.called) {
messages.push({ role: 'assistant', content: aiResponse });
messages.push({
role: 'user',
content: `HUB_RESULT: ${JSON.stringify(action.result)}`
});
const finalResponse = await llm.generate(messages);
console.log('Agent Response:', finalResponse);
}
}# Build frontend & sync database
bun run build
# Start production server
bun run startThis project is distributed under the AGPL-3.0 License (free for personal use and open-source modifications).
Commercial Use: A commercial license is required to use ๐ ๏ธ ToolHub within closed corporate environments or proprietary products without AGPL-3.0 copyleft restrictions.
Contact email: collab@labstudio.tech.
English | ะ ัััะบะธะน | ไธญๆ
TOOL HUB โ ััะพ ะฒััะพะบะพะฟัะพะธะทะฒะพะดะธัะตะปัะฝะฐั self-hosted ะฟะปะฐััะพัะผะฐ ั ะพัะบััััะผ ะธัั ะพะดะฝัะผ ะบะพะดะพะผ ะดะปั ัะพะทะดะฐะฝะธั, ัะฟัะฐะฒะปะตะฝะธั, ัะตะดะตัะฐัะธะธ ะธ ะฑะตะทะพะฟะฐัะฝะพะณะพ ะธัะฟะพะปะฝะตะฝะธั ะธะฝััััะผะตะฝัะพะฒ (tools) ะดะปั AI-ะฐะณะตะฝัะพะฒ ะปัะฑะพะณะพ ัะธะฟะฐ.
ะฅะฒะฐัะธั ั ะฐัะดะบะพะดะธัั ััะฝะบัะธะธ ะฒ ัะธััะตะผะฝัะต ะฟัะพะผะฟัั ะธ ะฟะตัะตะณััะถะฐัั ะบะพะฝัะตะบัั ะผะพะดะตะปะธ ัะพัะฝัะผะธ ะพะฟะธัะฐะฝะธะน API. TOOL HUB ะฟัะตะดะพััะฐะฒะปัะตั ะฐะณะตะฝัั ััััะบัััะธัะพะฒะฐะฝะฝัั ัะฐัะฟัะตะดะตะปัะฝะฝัั ัะฐะนะปะพะฒัั ัะธััะตะผั ะฝะฐะฒัะบะพะฒ ั ะฝะฐะฒะธะณะฐัะธะตะน ยซะฝะฐ ะปะตััยป ะธ ะตะดะธะฝัะผ ะบะพะฝััะฐะบัะพะผ ะฒะทะฐะธะผะพะดะตะนััะฒะธั.
ToolHub ะธะท ะบะพัะพะฑะบะธ ะธะฝัะตะณัะธัะพะฒะฐะฝ ั ะพัะบััััะผ ะฒะตะฑ-ะบะปะธะตะฝัะพะผ ๐งช lab (labstudio.tech) (GitHub Repo) โ ะปะตะณะบะพะฒะตัะฝัะผ serverless-ะธะฝัะตััะตะนัะพะผ ะดะปั ะพะฑัะตะฝะธั ั LLM:
๐ ะงะตะผ ToolHub ะพัะปะธัะฐะตััั ะพั ัะธะฟะธัะฝัั MCP-gateway (MCPJungle, MCPHub ะธ ั.ะด.)
| ะัะธัะตัะธะน | ToolHub | MCPJungle / MCPHub (ัะธะฟะธัะฝัะน MCP-gateway) |
|---|---|---|
| ะกััั ะฟะพะดั ะพะดะฐ | ะะฒะธะถะพะบ ะธัะฟะพะปะฝะตะฝะธั: ะฟัะตะฒัะฐัะฐะตั ะปัะฑะพะน ัะบัะธะฟั (Bun, Python, Go, Bash ะธ ั.ะด.) ะฒ tool ะฝะฐ ะปะตัั | ะัะพะบัะธ-ัะตะตััั: ัะตะณะธัััะธััะตั ัะถะต ะณะพัะพะฒัะต MCP-ัะตัะฒะตัั ะธ ัะฐะทะดะฐัั ะบ ะฝะธะผ ะดะพัััะฟ |
| ะกะพะทะดะฐะฝะธะต tool'ะฐ | ะะธัะตัั ัะบัะธะฟั โ ะพะฝ ััะฐะทั ััะฐะฝะพะฒะธััั ะธะฝััััะผะตะฝัะพะผ ะฐะณะตะฝัะฐ | ะัะถะตะฝ ะณะพัะพะฒัะน MCP-ัะตัะฒะตั, ะบะพัะพััะน ะบัะพ-ัะพ ัะถะต ัะตะฐะปะธะทะพะฒะฐะป ะฟะพ ะฟัะพัะพะบะพะปั |
| ะะฐะฒะธะณะฐัะธั | ะะตัะฐัั
ะธัะตัะบะพะต ะดะตัะตะฒะพ ะฟะฐะฟะพะบ (listTools("/system")) |
ะะปะพัะบะธะน ัะฟะธัะพะบ ะทะฐัะตะณะธัััะธัะพะฒะฐะฝะฝัั ัะตัะฒะตัะพะฒ/ััะปะพะฒ, ะณััะฟะฟะธัะพะฒะบะฐ ัะตัะตะท Tool Groups |
| ะคะตะดะตัะฐัะธั | ะะตัะบะพะฝะตัะฝะพ ะฒะปะพะถะตะฝะฝัะต REMOTE-ัะทะปั (ั ะฐะฑ โ ั ะฐะฑ โ ั ะฐะฑ) | ะะดะธะฝ ััะพะฒะตะฝั: ะบะปะธะตะฝั โ gateway โ ัะตัะฒะตัั, ะฑะตะท ัะตะบัััะธะฒะฝะพะน ะฒะปะพะถะตะฝะฝะพััะธ |
| MCP-ะธะฝัะตะณัะฐัะธั | ะะพะดะดะตัะถะธะฒะฐะตั MCP ะบะฐะบ ะพะดะธะฝ ะธะท ัะธะฟะพะฒ ะบะฐัะตะณะพัะธะน (Stateless + Stateful Pool) | MCP โ ะตะดะธะฝััะฒะตะฝะฝัะน ะฟะพะดะดะตัะถะธะฒะฐะตะผัะน ัะพัะผะฐั |
| ะะพะฝะฒะตััะฐัะธั MCP โ ะฝะฐัะธะฒะฝัะน tool | ะััั (MCP Promote) | ะััััััะฒัะตั |
| IDE-ะธะฝัะตะณัะฐัะธั | ะััั (Sublime Merge diff, replace-literal, Ctrl+Z) | ะััััััะฒัะตั |
| ะะพะฝััะพะปั ะดะพัััะฟะฐ | Toggle ััะปะพะฒ ะฒ ะฐะดะผะธะฝะบะต, ะดะฒะฐ ััะพะฒะฝั ะฟะฐัะพะปะตะน (agent/admin) | ACL/RBAC, Tool Groups, per-client ัะพะบะตะฝั (ะฒ enterprise-ัะตะถะธะผะต) |
- ะะตะท ะปะธัะฝะธั ะฑะฐััะตัะพะฒ (Zero Docker Needed): ะะฐะฟะธัะฐะฝะฐ ะฝะฐ Bun ะธ ะธัะฟะพะปะฝัะตั ะบะพะด ะฝะฐะฟััะผัั ะฒะพ ะฒัะตะผะตะฝะฝัั ะฟัะพัััะฐะฝััะฒะฐั ะะก. ะ ะฐะฑะพัะฐะตั ะฝะฐ Raspberry Pi, ัะบัะพะผะฝัั VPS ะธ ัะธะทะธัะตัะบะธั ัะตัะฒะตัะฐั ะฑะตะท ะพะฒะตัั ะตะดะฐ ะบะพะฝัะตะนะฝะตัะธะทะฐัะธะธ.
- ะฏะทัะบะพะฒะฐั ะฐะณะฝะพััะธะบะฐ: ะะฝััััะผะตะฝัะพะผ ะฐะณะตะฝัะฐ ะผะพะถะตั ััะฐัั ะปัะฑะพะน ัะบัะธะฟั ะฝะฐ Bun, Node.js, Python, Go, Bash, PHP, Deno, C++. ะัะปะธ ะบะพะผะฐะฝะดะฐ ะธัะฟะพะปะฝัะตััั ะฒ ะบะพะฝัะพะปะธ โ ะพะฝะฐ ััะฐะฝะพะฒะธััั ะฝะฐะฒัะบะพะผ ะะ.
- ะกััะพะณะฐั ะธะตัะฐัั
ะธัะตัะบะฐั ะฝะฐะฒะธะณะฐัะธั: ะะตัะตะฒะพ ะฟะฐะฟะพะบ ะฟะพะทะฒะพะปัะตั ะผะพะดะตะปะธ ะฝะต ะดะตัะถะฐัั ะฒ ะฟะฐะผััะธ ัะพัะฝะธ ัั
ะตะผ, ะฐ ะพัะบััะฒะฐัั ะบะฐัะตะณะพัะธะธ ัะตัะตะท
listTools()ะธ ะทะฐะฟััะบะฐัั ะฝัะถะฝัะน ะธะฝััััะผะตะฝั ัะตัะตะทcallTool(). - ะะตัะบะพะฝะตัะฝะฐั ัะตะดะตัะฐัะธั: ะฃะทะปั ToolHub ะพะฑัะตะดะธะฝััััั ะฒ ะดัะตะฒะพะฒะธะดะฝัะต ััััะบัััั ะปัะฑะพะน ะฒะปะพะถะตะฝะฝะพััะธ ั ะฝะพัะผะฐะปะธะทะฐัะธะตะน ะฟััะตะน ะธ ะทะฐัะธัะพะน ะพั ัะตะบัััะธะฒะฝัั ัะธะบะปะพะฒ.
- ะะฒัั ัะตะถะธะผะฝะฐั MCP-ัะบะพัะธััะตะผะฐ: ะะพะดะดะตัะถะบะฐ Model Context Protocol (MCP) ะบะฐะบ ะฒ ัะฐะทะพะฒะพะผ ัะพัะผะฐัะต Stdio (spawn-call-kill), ัะฐะบ ะธ ะฒ ะฒะธะดะต ะณะพัััะตะณะพ ะฟัะปะฐ ะฟัะพัะตััะพะฒ (Stateful Persistent Pool) ะดะปั ัะตััะธะน ั ะฐะบัะธะฒะฝัะผ ัะพััะพัะฝะธะตะผ ะฟะฐะผััะธ.
โโโโโโโโโโโโโโโโโโโโโโโโโโ
โ AI AGENT / SDK CLIENTโ
โโโโโโโโโโโโโฌโโโโโโโโโโโโโ
โ HTTP Requests
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ TOOL HUB CORE SYSTEM โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Fastify Router & Auth โ โ
โ โ โข Agent Auth (x-agent-password) โข Admin Auth (x-admin-password) โ โ
โ โโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ โ
โ โผ โผ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โ โ Agent API โ โ Admin API โ โ
โ โ (/*) โ โ (/admin/api/*) โ
โ โโโโโโโโฌโโโโโโโโ โโโโโโโโฌโโโโโโโโ โ
โ โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโ โ
โ โผ โ
โ UNIFIED ROUTER ENGINE โ
โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โผ โผ โผ โ
โ โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโ โ
โ โ LOCAL โ โ REMOTE โ โ MCP โ โ
โ โโโโโโฌโโโโโ โโโโโโฌโโโโโ โโโโโโฌโโโโโ โ
โ โ โ โ โ
โ โผ โผ โผ โ
โ Workspace HubSDK Proxy MCP Engine โ
โ Execution (Infinite Tree) โโโโโโโโโโดโโโโโโโโโ โ
โ (Bun/Py/Go...) โผ โผ โ
โ Stateless Stateful Pool โ
โ (Stdio Spawn) (Persistent PID) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
1. ะกะพะทะดะฐะฝะธะต Workspace โ 2. ะะฝัะตะบัะธั ัะฐะนะปะพะฒ โ 3. ะะฝััะฐะปะปััะธั โ 4. ะัะฟะพะปะฝะตะฝะธะต & Output
(/tmp/hub_run_xxx/) (Code & Deps) (installCmd) (runCmd + ENV)
- ะะทะพะปััะธั Workspace: ะัะบะตะฝะด ัะพะทะดะฐะตั ัะฝะธะบะฐะปัะฝัั ะธะทะพะปะธัะพะฒะฐะฝะฝัั ะฟะฐะฟะบั ะฒะพ ะฒัะตะผะตะฝะฝะพะน ะดะธัะตะบัะพัะธะธ ะะก (
/tmp/hub_run_<timestamp>_<hash>). - ะะฝัะตะบัะธั ะบะพะดะฐ ะธ ะทะฐะฒะธัะธะผะพััะตะน: ะะพะด ะทะฐะฟะธััะฒะฐะตััั ะฒ
codeFileName, ะฐ ะผะฐะฝะธัะตัั ะฟะฐะบะตัะพะฒ โ ะฒdepFileName. - ะะตัะตะดะฐัะฐ ะฐัะณัะผะตะฝัะพะฒ: ะคะพัะผะธััะตััั
input.jsonะฒ ะบะพัะฝะต ะฒะพัะบัะฟะตะนัะฐ, ะฐ ะฟะฐัะฐะผะตััั ะดัะฑะปะธัััััั ะฒ ะฟะตัะตะผะตะฝะฝัะต ะพะบััะถะตะฝะธัINPUT_<KEY_NAME>. - ะฃััะฐะฝะพะฒะบะฐ ะทะฐะฒะธัะธะผะพััะตะน: ะัะปะธ ะทะฐะดะฐะฝั ะทะฐะฒะธัะธะผะพััะธ ะธ
installCmd, ะฒัะฟะพะปะฝัะตััั ัะฑะพัะบะฐ (ะฝะฐะฟั.,pip install -r requirements.txt). - ะะฐะฟััะบ ะธ ัะฝััะธะต ะผะตััะธะบ (
runCmd): ะะฐะฟััะบะฐะตััั ะฟัะพัะตัั ั ัะฐะนะผะฐััะพะผtimeoutMs, ัะตะทัะปััะฐั ััะธััะฒะฐะตััั ะธะทoutput.jsonะธะปะธstdout, ะฐ ัะตะปะตะผะตััะธั ะพัะฟัะฐะฒะปัะตััั ะฒ Audit Logs. - ะัะธััะบะฐ: ะะพัะบัะฟะตะนั ะฟัะธะฝัะดะธัะตะปัะฝะพ ัะดะฐะปัะตััั ะธะท ัะฐะนะปะพะฒะพะน ัะธััะตะผั.
- ะัะพะผะฐัะฝัะต ะฟัะฐะฒะบะธ (
replace-literal): ะะณะตะฝั ะผะตะฝัะตั ัััะพะณะพ ะบะพะฝะบัะตัะฝัะต ัััะพะบะธ ะบะพะดะฐ ะทะฐ 2 ะผั ะฑะตะท ะฟะตัะตัะฐัั ะพะดะฐ ัะพะบะตะฝะพะฒ. - ะะฝัะตะณัะฐัะธั ั Sublime Merge: ะะฐะณะปัะดะฝัะน ะฒะธะทัะฐะปัะฝัะน Diff ะฒ ะพะบะฝะต ัะตะดะฐะบัะพัะฐ ั ะฟัะธะฝััะธะตะผ ะฟัะฐะฒะพะบ ะฒ 1 ะบะปะธะบ.
- ะะฐัะธะฒะฝัะน
Ctrl+Z: ะัะฐะฒะบะธ ะพั ะะ ัะฐะฑะพัะฐัั ัะตัะตะท ััะฐะฝะดะฐััะฝัะน Undo-ััะตะบ ัะตะดะฐะบัะพัะฐ.
- ะจะตัะธะฝะณ ะฝะฐะฒัะบะพะฒ: ะญะบัะฟะพัั ะบะฐัะตะณะพัะธะน ัะพ ะฒัะตะผะธ ะฟะพะดะฟะฐะฟะบะฐะผะธ, ะบะพะดะพะผ ะธ ัั
ะตะผะฐะผะธ ะฒ
.toolpack. - ะััะฝะฐะป ัะตะฒะธะทะธะน: ะะฒัะพะผะฐัะธัะตัะบะฐั ัะธะบัะฐัะธั ัะฝะธะผะบะพะฒ ะฟัะธ ะบะฐะถะดะพะผ ัะพั ัะฐะฝะตะฝะธะธ ั ะพัะบะฐัะพะผ ะฒ 1 ะบะปะธะบ.
| ะขะธะฟ | ะะฐะทะฝะฐัะตะฝะธะต | ะัะธะฝัะธะฟ ัะฐะฑะพัั |
|---|---|---|
LOCAL |
ะะพะบะฐะปัะฝะฐั ะฟะฐะฟะบะฐ ั ะธะฝััััะผะตะฝัะฐะผะธ | ะัะฟะพะปะฝะตะฝะธะต ัะบัะธะฟัะพะฒ ัะตัะตะท ะฒัััะพะตะฝะฝัะน ะดะฒะธะถะพะบ ัะฐะฝะฝะตัะพะฒ. |
REMOTE |
ะัะพะบัะธัะพะฒะฐะฝะธะต ะฝะฐ ะดััะณะพะน ToolHub | ะ ะตะบัััะธะฒะฝัะน ััะฝะฝะตะปั ะบ ัะดะฐะปะตะฝะฝะพะผั ัะทะปั ัะตัะตะท HubSDK. |
MCP |
ะะฝัะตะณัะฐัะธั ััะพัะพะฝะฝะตะณะพ MCP-ัะตัะฒะตัะฐ | ะะฐะฟััะบ ะฒะฝะตัะฝะตะณะพ MCP-ัะตัะฒะตัะฐ ัะตัะตะท Stdio. |
-
Stateless MCP (Stdio): ะะพะปะฝัะน ัะธะบะป ะฝะฐ ะบะฐะถะดัะน ะฒัะทะพะฒ:
spawn$\rightarrow$ initialize$\rightarrow$ tools/call$\rightarrow$ kill. -
Stateful MCP Pool (
mcpIsStateful): ะฃะดะตัะถะฐะฝะธะต ะฟัะพัะตััะฐ ะฒ ะฟะฐะผััะธ (Puppeteer, SSH, ะกะฃะะ). ะะพะฒัะพัะฝัะต ะฒัะทะพะฒั ะธัะฟะพะปะฝััััั ะทะฐ 10โ30 ะผั. ะะฒัะพะทะฐะฒะตััะตะฝะธะต ะฟัะธ ะฟัะพััะพะต ะฑะพะปะตะต 5 ะผะธะฝัั (TTL = 300s) ะธ ัะฐะผะพะฒะพัััะฐะฝะพะฒะปะตะฝะธะต ะฟัะธ ัะฑะพัั . -
MCP Promote: ะะพะฝะฒะตััะฐัะธั ะดะธะฝะฐะผะธัะตัะบะธั
ะธะฝััััะผะตะฝัะพะฒ MCP ะฒ ะฑะฐะทั ะดะฐะฝะฝัั
ะบะฐะบ ะฝะฐัะธะฒะฝัั
ัะตะดะฐะบัะธััะตะผัั
Toolะฒ 1 ะบะปะธะบ.
- ะะตัะบะพะฝะตัะฝะฐั ะฒะปะพะถะตะฝะฝะพััั: ะกะตัะฒะตั A ะฟะพะดะบะปััะฐะตั ะกะตัะฒะตั B, ะบะพัะพััะน ัะพะดะตัะถะธั ะฟะพะดะบะปััะตะฝะธะต ะบ ะกะตัะฒะตัั C (
/office/home/lights/turn_on). - ะะฐัะธัะฐ ะพั ัะธะบะปะพะฒ: ะะฒัะพะผะฐัะธัะตัะบะพะต ะพะฑะฝะฐััะถะตะฝะธะต ะธ ะบัะฟะธัะพะฒะฐะฝะธะต ะฒะทะฐะธะผะฝัั ัะตะบัััะธะฒะฝัั ัััะปะพะบ.
- ะัะพะทัะฐัะฝะพััั ะฒัะทะพะฒะพะฒ:
HubSDKะฑะตัะตั ะฝะฐ ัะตะฑั ะฝะพัะผะฐะปะธะทะฐัะธั ะฟััะตะน, ะฟัะพะบัะธัะพะฒะฐะฝะธะต ะธ ะฐะฒัะพัะธะทะฐัะธั.
<hub>listTools("/system")</hub><hub>callTool("/sublime/replace-literal", {
"find": "const PORT = 3000;",
"replace": "const PORT = 8080;"
})</hub>- Agent Security (
x-agent-password): ะะฐัะธัะฐะตั ะฐะณะตะฝััะบะธะต API-ัะพััั (GET /*ะธPOST /*). - Admin Studio Security (
x-admin-password): ะะฐัะธัะฐะตั ะฐะดะผะธะฝะธัััะฐัะธะฒะฝัะต ัััะบะธ ัะฟัะฐะฒะปะตะฝะธั (/admin/api/*).
# 1. ะะปะพะฝะธัะพะฒะฐะฝะธะต ัะตะฟะพะทะธัะพัะธั
git clone https://github.com/Talos-Popcorn/toolhub.git
cd toolhub
# 2. ะฃััะฐะฝะพะฒะบะฐ ะทะฐะฒะธัะธะผะพััะตะน
bun install
# 3. ะกะธะฝั
ัะพะฝะธะทะฐัะธั ัั
ะตะผั ะะ Prisma
bun run db:push
# 4. ะะฝัะตัะฐะบัะธะฒะฝัะน ะธะฝััะฐะปะปััะพั ะธ ัะธะด
# (ะัะฑะพั ัะทัะบะฐ ัะธััะตะผะฝะพะณะพ ะฟัะพะผะฟัะฐ EN/RU/ZH, ะฝะฐัััะพะนะบะฐ ะฟะฐัะพะปะตะน ะฐะดะผะธะฝะบะธ ะธ ะฐะณะตะฝัะฐ)
bun run db:seed
# ะะปะธ ะฒ ัะธั
ะพะผ ัะตะถะธะผะต ะดะปั CI/Docker:
# bun run prisma/seed.ts --lang=ru --admin-pass=admin --agent-pass=123
# 5. ะะฐะฟััะบ ัะตัะฒะตัะพะฒ ัะฐะทัะฐะฑะพัะบะธ
bun run dev- ะะฐะฝะตะปั ัะฟัะฐะฒะปะตะฝะธั:
http://localhost:5173/admin/(ะธะปะธ ะฟะพัั3000ะฒ ะฟัะพะด-ัะฑะพัะบะต) - Swagger ะดะพะบัะผะตะฝัะฐัะธั:
http://localhost:3000/docs(ะะพัััะฟะฝะฐ ัะพะปัะบะพ ะฒ ัะตะถะธะผะต ัะฐะทัะฐะฑะพัะบะธbun run dev) - ะะตัะพะปัะฝัะน ะฟะฐัะพะปั ะฐะดะผะธะฝะบะธ:
admin(ะธะปะธ ะทะฐะดะฐะฝะฝัะน ะฟัะธ ัะธะดะต) - ะะตัะพะปัะฝัะน ะฟะฐัะพะปั ะฐะณะตะฝัะฐ:
123(ะธะปะธ ะทะฐะดะฐะฝะฝัะน ะฟัะธ ัะธะดะต)
import { HubSDK } from './SDK/JS/sdk';
const hub = new HubSDK('http://localhost:3000', '123');
async function runAgentLoop(userQuery: string) {
const systemPrompt = await hub.getSmartPrompt();
const messages = [
{ role: 'system', content: systemPrompt },
{ role: 'user', content: userQuery }
];
let aiResponse = await llm.generate(messages);
const action = await hub.processAgentResponse(aiResponse);
if (action.called) {
messages.push({ role: 'assistant', content: aiResponse });
messages.push({
role: 'user',
content: `HUB_RESULT: ${JSON.stringify(action.result)}`
});
const finalResponse = await llm.generate(messages);
console.log('ะัะฒะตั ะฐะณะตะฝัะฐ:', finalResponse);
}
}# ะกะฑะพัะบะฐ ััะพะฝัะตะฝะดะฐ ะธ ัะธะฝั
ัะพะฝะธะทะฐัะธั ะะ
bun run build
# ะะฐะฟััะบ ะฟัะพะดะฐะบัะฝ ัะตัะฒะตัะฐ
bun run startะัะพะตะบั ัะฐัะฟัะพัััะฐะฝัะตััั ะฟะพะด ะปะธัะตะฝะทะธะตะน AGPL-3.0 (ะฑะตัะฟะปะฐัะตะฝ ะดะปั ะปะธัะฝะพะณะพ ะธัะฟะพะปัะทะพะฒะฐะฝะธั ะธ open-source ะผะพะดะธัะธะบะฐัะธะน).
ะะปั ะบะพะผะผะตััะตัะบะพะณะพ ะธัะฟะพะปัะทะพะฒะฐะฝะธั: ะะปั ะธัะฟะพะปัะทะพะฒะฐะฝะธั ๐ ๏ธ ToolHub ะฒะฝัััะธ ะทะฐะบััััั
ะบะพัะฟะพัะฐัะธะฒะฝัั
ะบะพะฝัััะพะฒ ะธะปะธ ะฟัะพะฟัะธะตัะฐัะฝัั
ะฟัะพะดัะบัะพะฒ ะฑะตะท ะพะณัะฐะฝะธัะตะฝะธะน AGPL-3.0 ััะตะฑัะตััั ะบะพะผะผะตััะตัะบะฐั ะปะธัะตะฝะทะธั.
ะะพััะฐ ะดะปั ัะฒัะทะธ: collab@labstudio.tech.
English | ะ ัััะบะธะน | ไธญๆ
TOOL HUB ๆฏไธๆฌพ้ซๆง่ฝใๆฏๆ็งๆๅ้จ็ฝฒ็ๅผๆบๅนณๅฐ๏ผไธไธบๅ็ฑป AI ๆบ่ฝไฝ่ฎพ่ฎก๏ผๆไพๆ่ฝไธๅทฅๅ ท (Tools) ็ๅๅปบใ็ผๆใ่้ฆๅ็ฎก็ไธๅฎๅ จๆง่ก็ฏๅขใ
ๅๅซๅจ็ณป็ปๆ็คบ่ฏไธญ็กฌ็ผ็ ๅฝๆฐไปฅๅ API Schema ไธฅ้ๆถ่ไธไธๆ็็็นใTOOL HUB ไธบๆบ่ฝไฝๆๅปบไบ็ปๆๅ็ๅๅธๅผๆ่ฝๆไปถ็ณป็ป๏ผๆฏๆๅณๆถ็ฎๅฝๅฏผ่ชไธๆ ๅ็ปไธ็ไบคไบๅฅ็บฆใ
ToolHub ๅ็ๆ ็ผ้ๆๅผๆบ Web ๅฎขๆท็ซฏ ๐งช lab (labstudio.tech) (GitHub ไปๅบ) โโ ่ถ ่ฝป้ใๆ ๅ็ซฏ็ Serverless ๅคงๆจกๅไบคไบๅทฅไฝๅฐ๏ผ
| ๅฏนๆฏ้กน | ToolHub | MCPJungle / MCPHub๏ผๅ ธๅ MCP ็ฝๅ ณ๏ผ |
|---|---|---|
| ๆ ธๅฟๆ่ทฏ | ๆง่กๅผๆ๏ผๅฐไปปๆ่ๆฌ๏ผBunใPythonใGoใBash ็ญ๏ผๅณๆถ่ฝฌๅไธบๅทฅๅ ท | ไปฃ็ๆณจๅ่กจ๏ผๆณจๅๅทฒๅฎ็ฐๅฅฝ็ MCP ๆๅกๅจๅนถๅ้ ่ฎฟ้ฎๆ้ |
| ๅๅปบๅทฅๅ ท | ็ผๅ่ๆฌ โ ็ซๅณๆไธบๆบ่ฝไฝๅฏ็จ็ๅทฅๅ ท | ้่ฆๅทฒๆ MCP ๅ่ฎฎๅฎ็ฐๅฅฝ็ๆๅกๅจ |
| ๅฏผ่ชๆนๅผ | ๅฑ็บงๆไปถๅคนๆ ๏ผlistTools("/system")๏ผ |
ๅทฒๆณจๅๆๅกๅจ/ๅทฅๅ ท็ๅนณ้บๅ่กจ๏ผ้่ฟ Tool Groups ๅ็ป |
| ่้ฆๆถๆ | ๆ ้ๅตๅฅ็ REMOTE ่็น๏ผhub โ hub โ hub๏ผ | ๅๅฑ็ปๆ๏ผๅฎขๆท็ซฏ โ ็ฝๅ ณ โ ๆๅกๅจ๏ผๆ ้ๅฝๅตๅฅ |
| MCP ้ๆ | ๅฐ MCP ไฝไธบๅ็ฑปไนไธๆฏๆ๏ผๆ ็ถๆ + ๆ็ถๆ่ฟ็จๆฑ ๏ผ | MCP ๆฏๅฏไธๆฏๆ็ๆ ผๅผ |
| MCP โ ๅ็ๅทฅๅ ท่ฝฌๆข | ๆฏๆ๏ผMCP Promote๏ผ | ไธๆฏๆ |
| IDE ้ๆ | ๆฏๆ๏ผSublime Merge ๅทฎๅผๅฏนๆฏใreplace-literalใๅ็ๆค้๏ผ | ไธๆฏๆ |
| ่ฎฟ้ฎๆงๅถ | ็ฎก็้ขๆฟไธญๅผๅ ณๅทฅๅ ท๏ผๅๅฑๅฏ็ ๏ผagent/admin๏ผ | ACL/RBACใTool Groupsใๆๅฎขๆท็ซฏๅ้ ไปค็๏ผไผไธๆจกๅผไธ๏ผ |
- ๆ ้ Docker (Zero Docker Needed): ๅบไบ Bun ๆๅปบ๏ผไปฃ็ ็ดๆฅๅจๆไฝ็ณป็ป้็ฆป็ไธดๆถๅทฅไฝๅบ่ฟ่กใๅณไฝฟๅจ Raspberry Pi ๆ่ฝป้ VPS ไธไน่ฝๆฏซ็ง็บงๆ้ๅๅบใ
- ๅค่ฏญ่จๆ ็ผๅ ผๅฎน: ไปปไฝ Bun, Node.js, Python, Go, Bash, PHP, Deno, C++ ่ๆฌๅๅฏ็ดๆฅไฝไธบๆ่ฝ่ฟ่กใ็ป็ซฏ่ฝๆง่ก็ๅฝไปค๏ผๅๅฏ่ฝฌไธบ AI ๅทฅๅ ทใ
- ๅๅฑๆ่ฝๆ ๅฏผ่ช: ๆ่ฝๆๆไปถ็ฎๅฝ็ป็ป๏ผๆจกๅๆ ้ๅธธ้ฉปๆฐ็พไธชๅทฅๅ
ทๆ่ฟฐ๏ผๅช้้่ฟ
listTools()ๆต่ง็ฎๅฝๅนถ้่ฟcallTool()ๆ้่ฐ็จใ - ๆ ้่้ฆ็ฝ็ป (Infinite Federation): ๆฏๆๅคไธช ToolHub ่็น็ธไบๆ่ฝฝไธบๆ ็ถๅญ็ฎๅฝ๏ผ่ชๅจๅค็่ทฏๅพ่ง่ๅๅนถๆ็ปๅพช็ฏๅผ็จใ
- ๅๆจก MCP ็ๆ: ๅ จ้ขๆฏๆ Model Context Protocol (MCP)๏ผๆไพๆ ๅ Stdio ๆจกๅผไธ้ๅฏนๅคๆไผ่ฏ๏ผPuppeteerใSSHใๆฐๆฎๅบ๏ผ็ๅธธ้ฉป็ญ่ฟ็จๆฑ (Stateful Persistent Pool)ใ
โโโโโโโโโโโโโโโโโโโโโโโโโโ
โ AI AGENT / SDK CLIENTโ
โโโโโโโโโโโโโฌโโโโโโโโโโโโโ
โ HTTP Requests
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ TOOL HUB CORE SYSTEM โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Fastify Router & Auth โ โ
โ โ โข Agent Auth (x-agent-password) โข Admin Auth (x-admin-password) โ โ
โ โโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ โ
โ โผ โผ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โ โ Agent API โ โ Admin API โ โ
โ โ (/*) โ โ (/admin/api/*) โ
โ โโโโโโโโฌโโโโโโโโ โโโโโโโโฌโโโโโโโโ โ
โ โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโ โ
โ โผ โ
โ UNIFIED ROUTER ENGINE โ
โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โผ โผ โผ โ
โ โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโ โ
โ โ LOCAL โ โ REMOTE โ โ MCP โ โ
โ โโโโโโฌโโโโโ โโโโโโฌโโโโโ โโโโโโฌโโโโโ โ
โ โ โ โ โ
โ โผ โผ โผ โ
โ Workspace HubSDK Proxy MCP Engine โ
โ Execution (Infinite Tree) โโโโโโโโโโดโโโโโโโโโ โ
โ (Bun/Py/Go...) โผ โผ โ
โ Stateless Stateful Pool โ
โ (Stdio Spawn) (Persistent PID) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
1. ๅๅปบ้็ฆปๅทฅไฝๅบ โ 2. ๅๅ
ฅๆไปถ/ๅๆฐ โ 3. ๅฎ่ฃ
ไพ่ตๅ
โ 4. ่ฟ่กไธๆ่ท่พๅบ
(/tmp/hub_run_xxx/) (Code & Deps) (installCmd) (runCmd + ENV)
- ๅทฅไฝๅบ้็ฆป: ๅจ็ณป็ปไธดๆถ็ฎๅฝๅๅปบไธๅฑ็ฌ็ซๆไปถๅคน (
/tmp/hub_run_<timestamp>_<hash>)ใ - ไปฃ็ ไธไพ่ตๅๅ
ฅ: ๅๅซๅๅ
ฅ
codeFileNameไธdepFileNameใ - ๅๆฐๆณจๅ
ฅ: ็ๆ
input.jsonๅนถๅๆญฅๆ ๅฐ่ณINPUT_<KEY_NAME>็ฏๅขๅ้ใ - ไพ่ตๅฎ่ฃ
: ่ฅๅญๅจไพ่ตๅๆง่ก
installCmd๏ผๅฆpip install -r requirements.txt๏ผใ - ๆง่กไธ้ฅๆต: ่ฟ่ก
runCmd๏ผๆ่ทoutput.jsonๆstdout๏ผๆง่ก่ๆถไธๆฅๅฟๅๆญฅๅญๅ ฅๅฎก่ฎกๆฅๅฟใ - ็ฏๅข้ๆฏ: ๅฝปๅบๆธ ็ๅนถๅ ้คไธดๆถๅทฅไฝๅบใ
- ๅๅญ็บงไปฃ็ ๆฟๆข (
replace-literal): ๆบ่ฝไฝ 2ms ๅ ๅฎๆ็ฒพ็กฎ่ก็บงๆฟๆข๏ผๆ็ปๅ จๆไปถ้ๅๅธฆๆฅ็ Token ๆตช่ดนใ - Sublime Merge ๅฏ่งๅ Diff: ๅจ็ผ่พๅจๅ ๅฎๆถ้ข่ง AI ไฟฎๆน๏ผไธ้ฎๆฅๅๆๆ็ปๅๆดใ
- ๅ็ๆค้ๆ ๆฏๆ: AI ็ไฟฎๆนๅฎ็พ้ๆๅจ็ผ่พๅจ็
Ctrl+Zๅๅฒ่ฎฐๅฝไธญใ
- ๆ่ฝๅ
ๅ
ฑไบซ: ๆฏๆๅฐๅ็ฑป็ฎๅฝใไปฃ็ ๅ Schema ๆดไฝๅฏผๅบไธบ
.toolpackใ - ็ๆฌๅฟซ็ ง: ๆฏๆฌกไฟๅญ่ชๅจ็ๆ็ๆฌไฟฎ่ฎขๅฟซ็ ง๏ผๆฏๆไธ้ฎๅๆปใ
| ๅ็ฑป็ฑปๅ | ๅฎไฝ | ่ฟ่กๆบๅถ |
|---|---|---|
LOCAL |
ๆฌๅฐๅทฅๅ ท็ฎๅฝ | ้่ฟๅ ็ฝฎ่ฟ่กๅจๅผๆๅจๆฌๅฐๅทฅไฝๅบๆง่กใ |
REMOTE |
ToolHub ่็นไปฃ็ | ้่ฟ HubSDK ้ๅฝ่ฝฌๅ่ณ่ฟ็จ่็นใ |
MCP |
ๅค้จ MCP ๆๅก็ซฏ | ้่ฟ Stdio ่ฟ็จ้ไฟก้ๆ Model Context Protocolใ |
-
Stateless MCP (Stdio): ๆฏๆฌก่ฐ็จๅณๆถๆง่ก็ๅฝๅจๆ๏ผ
spawn$\rightarrow$ initialize$\rightarrow$ tools/call$\rightarrow$ ้ๅบใ -
Stateful MCP Pool (
mcpIsStateful): ไธบๅคๆไผ่ฏ๏ผPuppeteer ๆต่งๅจใSSH ็ญ๏ผไฟๆๅ ๅญๅธธ้ฉปใๅ็ปญ่ฐ็จไป ้ 10โ30msใ็ฉบ้ฒ 5 ๅ้่ชๅจ้ๆพ (TTL=300s)๏ผๅผๅธธ้ๅบ่ชๅจๆขๅคใ -
MCP Promote: ไธ้ฎๅฐ MCP ๅจๆๅทฅๅ
ท่ฝฌๆขไธบๆฐๆฎๅบๅ็ๅฏ็ผ่พ็ๆฌๅฐ
Toolใ
<hub>listTools("/system")</hub><hub>callTool("/sublime/replace-literal", {
"find": "const PORT = 3000;",
"replace": "const PORT = 8080;"
})</hub>- ๆบ่ฝไฝ่ฎค่ฏ (
x-agent-password): ไฟๆคๆ่ฝ็ฎๅฝๆฅ่ฏขไธๆง่กๆฅๅฃ (GET /*,POST /*)ใ - ็ฎก็ๅๅฐ่ฎค่ฏ (
x-admin-password): ไฟๆค็ฎก็ๆงๅถๅฐๅๆ ธๅฟ้ ็ฝฎๆฅๅฃ (/admin/*)ใ
# 1. ๅ
้ไปฃ็ ไปๅบ
git clone https://github.com/Talos-Popcorn/toolhub.git
cd toolhub
# 2. ๅฎ่ฃ
ไพ่ต
bun install
# 3. ๆจ้ Prisma ็ปๆ่ณๆฐๆฎๅบ
bun run db:push
# 4. ไบคไบๅผๅฎ่ฃ
ๅๅฏผไธๆฐๆฎๅบๅกซๅ
(Seed)
# (ๆฏๆ้ๆฉ็ณป็ปๆ็คบ่ฏ่ฏญ่จ EN/RU/ZH ๅ่ชๅฎไน็ฎก็ๅ/ๆบ่ฝไฝๅฏ้ฅ)
bun run db:seed
# ่ชๅจๅ/CI ้้ปๆจกๅผ:
# bun run prisma/seed.ts --lang=zh --admin-pass=admin --agent-pass=123
# 5. ๅฏๅจๅผๅๆๅกๅจ
bun run dev- ๆงๅถๅฐ็้ข:
http://localhost:5173/admin/(็ไบง็ฏๅขไธบ3000็ซฏๅฃ) - Swagger ๆฅๅฃๆๆกฃ:
http://localhost:3000/docs(ไป ๅจbun run devๅผๅๆจกๅผไธๅผๅฏ) - ้ป่ฎค็ฎก็ๅๅฏ็ :
admin(ๆๅฎ่ฃ ๆถๆ่ฎพๅฏ็ ) - ้ป่ฎคๆบ่ฝไฝๅฏ้ฅ:
123(ๆๅฎ่ฃ ๆถๆ่ฎพๅฏ้ฅ)
import { HubSDK } from './SDK/JS/sdk';
const hub = new HubSDK('http://localhost:3000', '123');
async function runAgentLoop(userQuery: string) {
const systemPrompt = await hub.getSmartPrompt();
const messages = [
{ role: 'system', content: systemPrompt },
{ role: 'user', content: userQuery }
];
let aiResponse = await llm.generate(messages);
const action = await hub.processAgentResponse(aiResponse);
if (action.called) {
messages.push({ role: 'assistant', content: aiResponse });
messages.push({
role: 'user',
content: `HUB_RESULT: ${JSON.stringify(action.result)}`
});
const finalResponse = await llm.generate(messages);
console.log('ๆบ่ฝไฝๅๅบ็ปๆ:', finalResponse);
}
}# ็ผ่ฏๅ็ซฏ้ๆ่ตๆบๅนถๅๆญฅๆฐๆฎๅบ
bun run build
# ๅฏๅจ็ไบงๆๅก
bun run startๆฌ้กน็ฎๅบไบ AGPL-3.0 ่ฎธๅฏ่ฏ ๅผๆบๅๅ๏ผไธชไบบไฝฟ็จไธๅผๆบ่ก็ไฟฎๆนๅฎๅ จๅ ่ดน๏ผใ
ๅไธๆๆ๏ผ ่ฅ่ฆๅจไธๅ AGPL-3.0 ไผ ๆๆงๅผๆบ็บฆๆ็ๅๆไธ๏ผๅฐ ๐ ๏ธ ToolHub ้จ็ฝฒไบๅฐ้ญ็ไผไธๅ
็ฝๆ้ๆ่ณไธๆๅไธไบงๅไธญ๏ผ้่ทๅๅไธๆๆ่ฎธๅฏ่ฏใ
่็ณป้ฎ็ฎฑ๏ผcollab@labstudio.techใ
Built for the future of autonomous, distributed AI agents.



