crouter—代理运行时:画布上的持久代理,由CLI或SDK驱动
crouter是Node.js的代理运行时。每个代理都是一个 节点:带有目标、上下文目录和分离进程(它的进程)的记录 代理),它承载模型会话。一个守护进程, crtrd,拥有每个节点的状态和生命周期。你用 crtr 命令行、终端查看器或类型化TypeScript SDK——这三者都是同一个本地API的客户端。每个模型会话运行 π开源编码代理工具;crouter在它周围添加守护进程、节点图、上下文系统和CLI。
关闭终端不会停止代理,正在等待的代理根本没有进程。节点可以产生子节点,向订阅它们的任何人报告,并共享当其他代理变得相关时显示的降价文档。路由器不是模型,也不绑定模型:您在安装期间登录到模型提供程序。它也不是托管服务;它在您的机器上运行,或者在您启动的容器中运行。
文档 · 开始 · 概念 · SDK · 插件 · 市场 · 不和
安装
npm install -g @north-light/cli
crtr
第一个 crtr 在机器上打开安装程序安装程序。它将您登录到模型提供者,然后提供配套软件包(包括官方插件市场)和系统依赖项,如tmux。设置后, crtr 打开与代理的对话,代理将提供有关路由器工作原理的简短介绍。 crtr sys setup 稍后重新打开安装程序。
要求:
- Node.js 22.19及以上版本。这是pi包所依赖的下限;CI和Docker镜像运行Node 24。
- Tmux,用于终端内查看器。第一次运行的安装程序提供安装它,并且
crtr开始在外面tmux打开一个crouterTmux会话,在那里运行。 - macOS是CI练习的对象。在Linux上,支持的路由是Docker镜像(参见 在容器中运行它)。
快速启动
从您希望代理在tmux外部工作的目录中, crtr 为你启动它):
crtr # a conversation here
crtr . "Inspect this repository and report the failing tests." # with a first message
crtr -c # return to the latest conversation here
crtr -r <node-id> # reopen one conversation by id (`crtr -r` alone picks)
输入发送消息;Alt+Enter (Mac上的选项+Enter)或Shift+Enter开始新行。
要在不接管终端的情况下从脚本或其他代理启动代理,请创建一个根节点:
crtr node new --root "Inspect this repository and report the failing tests."
--root 创建独立节点并启动其代理。在tmux内部,该命令为它打开一个查看器窗格;在tmux外部,它打印节点id,你自己打开查看器:
crtr surface attach to <node-id>
观众不是代理人。关闭它,节点继续工作;稍后为保存的对话再次打开它。查看画布上的每个节点:
crtr canvas dashboard # the subscription tree as ASCII: status, kind, context size
crtr canvas browse # interactive navigator with tabs and search
crtr canvas attention list # nodes waiting on you
这个 第一次会议指南 按顺序进行讲解。
它是做什么的
每个项命名执行该操作的命令。 crtr <command> -h 打印出他们所有人的确切合同。
节点和委托。 crtr node new 创建一个子进程并订阅其父进程;这个孩子报告说 crtr push update 以 crtr push final,这个报告唤醒了父母。 --worktree <branch> 给子进程自己的git工作树 crtr/<node-id> 分支, --fork-from 从另一个节点的会话启动它,并且 --output-schema 使其最终结果成为根据模式验证的JSON文档。决定其工作划分为独立部分的节点运行 crtr node promote 成为了一名管弦乐演奏家。
等待不需要付出任何代价。 无事可做的节点结束了它的回合并处于休眠状态:没有代理,没有模型调用。一个孩子的报告,一条信息(crtr node message send),一个人类的回答,或者一个cron唤醒它的对话完好无损。如果代理崩溃,守护进程保留节点的行、会话、等待和收件箱; crtr canvas revive --all 重新启动后重新连接每个断开连接的节点。
画布上。 每个节点、文档、后台作业和所有者都是一个具有名称的对象。 crtr canvas read, list, search 和 edges 努力解决所有问题。阅读或编写对象使您成为观察者,因此稍后的编辑和报告将到达您的收件箱。 crtr canvas history 搜索目录中过去的运行被告知和说了什么。
文档。 知识(咨询)和偏好(遵循)是节点、repo、配置文件、用户或插件拥有的标记文档。传递规则决定是否向代理显示文档的名称,它的一行“读取时”预览,或者它的整个主体——在启动时,当它读取文件时,或者在命令之前。 crtr doc write 和 crtr doc edit 把它们写; crtr sys context 解释为什么载入或不载入; crtr sys sync 导入 CLAUDE.md, AGENTS.md, .claude/rules 还有技能包。
人类的收件箱。 crtr human send 将键入的页面(选择器、表格、自由文本)放入收件箱;您的答案被传递回请求的节点。 crtr human review 打开带有固定注释的文档以供查看 crtr human show 将文件保存在tmux窗格中。
调度。 crtr cron add 存储守护进程每次或每次运行的bash命令(--at, --every),并可以将其输出路由到节点的收件箱或新节点(--sink node:<id> / spawn:<kind>). 退出75的命令被视为尚未合格,下一个节奏将重新检查它。
范围。 节点或远程令牌携带允许列表(crtr:llm, crtr:act, crtr:schedule, crtr:memory:read:user,…),守护进程在执行操作的路由上检查。 crtr sys connect --app <id> --scopes … 生成一个令牌,其列表包含应用程序可以创建的所有内容。
插件和市场。 市场是一个git插件仓库; crtr pkg market add <git-url> 注册一个及 crtr pkg plugin install <marketplace>/<plugin> 从它安装。插件可以添加命令(本地可执行文件或HTTP)、文档、代理类型和二进制文件。 crtr custom-object register 使外部服务成为画布上的可观察对象。
它们是如何组合在一起的
flowchart LR
CLI[crtr CLI] --> API["/v1 API"]
SDK[SDK application] --> API
Viewer[Terminal viewer] --> API
API --> Daemon[crtrd]
Daemon --> Canvas[Canvas state]
Daemon --> Broker[Detached broker per node]
Viewer -. live session .-> Broker
crtrd 是唯一的画布状态的作者和唯一的经纪人的启动器。命令行、查看器和SDK应用程序调用其 /v1 API;它们都不会打开画布数据库或启动自己的引擎。在一台机器上,他们使用一个专用的Unix套接字。浏览器或远程进程使用TCP侦听器和承载令牌(crtr sys connect)。
代价是:必须运行一个守护进程(CLI和SDK在第一次使用时启动它),并且远程客户机上的网络故障导致请求失败,而不是重放请求。它所购买的是状态的一个所有者,因此节点比终端、查看器或创建它的应用程序更长寿。 为什么是守护进程? 涵盖了推理。
从应用程序中使用路由器
npm install @north-light/sdk zod
import Crouter from '@north-light/sdk';
import { z } from 'zod';
const client = new Crouter(); // local daemon; started on first request if it is not running
const run = await client.nodes.parse({
prompt: 'Read package.json and return its name and version.',
cwd: '/absolute/path/to/project',
output_schema: z.object({ name: z.string(), version: z.string() }),
});
if (run.kind === 'result') console.log(run.output_parsed.name, run.output_parsed.version);
else console.error(run.reason, run.detail);
nodes.parse 返回类型化结果或显式失败;它永远不会返回需要解析的文本。 nodes.stream 将运行的文本和工具调用管道到UI。看到 SDK文档 和 食谱.
在容器中运行它
docker run --cap-add SYS_ADMIN --cap-add NET_ADMIN --security-opt seccomp=unconfined --security-opt apparmor=unconfined \
-e CRTRD_TOKEN=<a-secret-you-choose> -p 7777:7777 ghcr.io/northlight-systems/crtrd
curl -H "Authorization: Bearer <a-secret-you-choose>" http://localhost:7777/healthz
图像运行 crtrd TCP背后的无头;每个请求都需要承载令牌。它的沙盒启动程序需要两个功能和不受限制的seccomp/AppArmor配置文件。它不包含模型凭据,所以在创建运行之前给代理一个。挂载指定卷 /volume 以便在重新启动时保持画布和已安装的凭据。从节点, @north-light/env-docker 为您启动和停止此容器。详情见 docker/README.md.
延长克劳特
应用程序将类型化操作公开为本机操作 crtr 命令与 @north-light/plugin定义一次命令树,它就会生成HTTP处理程序和它的归档文件 crtr pkg plugin install --endpoint <url> --name <name> 读取。这个 插件文档 涵盖命令、参数、输出、错误和部署。
现成的插件就在 官方市场: exa-search, capture, tsym, bird, github-asset, dev, vercel, fly, railway, cloudflare等等。第一次运行的安装程序提供注册它。
包
| 包 | 它是什么? | 来源 |
|---|---|---|
@north-light/cli | 这个 crtr CLI, crtrd Daemon和终端查看器 | src/ |
@north-light/sdk | 类型节点和浏览器客户端:运行、流、结果、文件、bash、内存 | packages/crouter-sdk |
@north-light/plugin | 从一个类型的命令树编写HTTP插件 | packages/crouter-plugin |
@north-light/api | 这个 /v1 API合同: CrtrClient, dto,路由,错误 | packages/crouter-api |
@north-light/env-docker | 开始或连接到 crtrd 容器 | packages/crouter-env-docker |
@north-light/identity | 验证访问令牌并评估作用域 | packages/crouter-identity |
大多数应用程序只需要 @north-light/sdk. 其他存储库内容: docs/ 是文件的来源, apps/docs 是TanStack Start网站,在crouter.docs.northlight.ai上发布。 docker/ 构建 crtrd 形象, examples/ 包含SDK配方和本地主机演示。
开发
源存储库是北极光系统私有的;本节是针对其开发人员的。
git clone [email protected]:Northlight-Systems/crouter.git
cd crouter
npm ci
npm run build
考试分三车道进行——单位(npm test),集成,以及针对编译的接缝 dist/. 用 npm run test:isolated,它将签出复制到临时的 HOME 首先:该套件拒绝针对您的真实帐户运行,因为运行时安装程序和项目范围查找可能会写入它。 test:isolated 使用 /usr/bin/lockf 和 /Users/Shared,所以它运行在macOS上。
npm run test:isolated # unit lane
npm run test:isolated -- integration seam
npm run test:isolated -- path/to/file.test.ts
文档站点运行于 apps/docs 与 npm run dev. CONTRIBUTING.md 有北极光系统开发人员的下拉请求约定。
安全
要报告漏洞,请执行以下操作 SECURITY.md 而不是公开问题。
许可证
路由器是专有软件。版权所有2026 Northlight Systems版权所有。源存储库是私有的;这些包以编译后的、缩小的构建版本的形式发布到NPM。看到 许可证.