Every cell of Nodecode, one folder each, under the kind it is: a provider (a model subscription, a sign-in, a wire), a tool (a verb the model or the operator calls), a room (a chat surface).
Two sorts live side by side. The ones marked ships are built into every
Nodecode release: the release reads them from here at the one commit its
src/cells/bundle.json pins, so they are never index entries. The rest are
in index.json, which nodecode add nc://NAME, /cells and
the setup walk read and list after the shipped ones. template/
is what a new cell is copied from.
| Folder | What it does |
|---|---|
nodecode-acp |
Claude Code, Codex, Gemini CLI or any ACP agent as a session's agent: its calls, diffs, permission cards and Stop on the page. |
nodecode-alibaba-coding-plan |
Alibaba Coding Plan: Model Studio's coding subscription as a Nodecode provider. |
nodecode-alibaba-token-plan |
QwenCloud Token Plan: Alibaba's regional token subscription as a Nodecode provider. |
nodecode-amazon-bedrock |
Amazon Bedrock: the Converse Stream wire, SigV4 signing and the AWS event stream, on a lane of its own. |
nodecode-apple |
Apple Foundation Models: the on-device model, through omp's Swift bridge, as a provider lane (macOS only). |
nodecode-azure |
Azure OpenAI: the Responses API on an Azure resource, with its api-version and api-key. |
nodecode-claude-code |
Claude models through your own logged-in Claude Code CLI. Linux and macOS. |
nodecode-cline |
Cline's API: the client header its free models need, and its model feed. |
nodecode-cline-pass |
ClinePass: Cline's model subscription as a Nodecode provider. |
nodecode-cloudflare-ai-gateway |
Cloudflare AI Gateway: Anthropic, OpenAI and Workers AI models through one gateway. |
nodecode-codex-auth |
A ChatGPT subscription's login on OpenAI-family lanes. |
nodecode-cursor |
Cursor: a browser sign-in, and Cursor's Agent protocol (Connect over HTTP, protobuf) as a lane of its own. |
nodecode-devin |
Devin: a browser sign-in, and Codeium's Cascade wire (Connect over protobuf) as a lane of its own. |
nodecode-factory-droid |
Factory Droid: Factory's model subscription as a Nodecode provider, signed in with a WorkOS device code. |
nodecode-github-copilot |
GitHub Copilot: a GitHub device sign-in, and Copilot's Messages, chat and Responses wires as one provider. |
nodecode-gitlab-duo |
GitLab Duo Non-Agentic: Duo's chat models through GitLab's AI gateway, as a Nodecode provider. |
nodecode-gitlab-duo-agent |
GitLab Duo Agent: the Duo Workflow Service as a Nodecode provider lane. |
nodecode-google-antigravity |
Antigravity: a Google sign-in, and Antigravity's Cloud Code Assist wire as a lane of its own. |
nodecode-google-gemini-cli |
Google Cloud Code Assist: a Google sign-in, and the Gemini CLI's wire as a lane of its own. |
nodecode-google-vertex |
Google Vertex AI: Gemini, Claude and partner models on a Google Cloud project, with an API key or Application Default Credentials. |
nodecode-kilo |
Kilo Gateway: sign in with a device code, and serve its models. |
nodecode-kimi-code |
Kimi Code: Moonshot's coding subscription as a Nodecode provider, signed in with a device code. |
nodecode-local |
Local models: omp's tiny-model workers (ONNX, MLX) as a Nodecode provider lane. |
nodecode-muse-code |
Muse Code: Meta's Muse subscription as a Nodecode provider, signed in with a device code. |
nodecode-ollama-cloud |
Ollama Cloud: Ollama's native /api/chat wire as a Nodecode provider lane. |
nodecode-openai-codex |
ChatGPT Plus/Pro (Codex subscription): sign in, and serve the Codex models. |
nodecode-openai-codex-device |
ChatGPT Plus/Pro (Codex, headless/device): sign in with a device code, and serve the Codex models. |
nodecode-openrouter |
OpenRouter, with its browser sign-in, as a Nodecode provider. |
nodecode-snowflake |
Snowflake Cortex: Claude and GPT models on a Snowflake account, signed in or with a PAT. |
nodecode-xai-oauth |
XAI Grok through a SuperGrok or X Premium+ sign-in, as a Nodecode provider. |
nodecode-xiaomi |
Xiaomi MiMo: its models, on a pay-as-you-go key or a regional Token Plan key. |
nodecode-zai-coding-plan |
Z.AI GLM Coding Plan, signed in from the browser, as a Nodecode provider. |
| Folder | What it does |
|---|---|
nodecode-chrome |
ships Drive Chrome; needs the companion extension. |
nodecode-cron |
ships Prompts that run on a schedule. |
nodecode-cyber-security |
ships Cyber security: the latest breaches and the fix for each, re-scanned every 6 hours; checks your server and website and walks you through patching. |
nodecode-experience |
ships Learns from each turn: reflection and recaps. |
nodecode-goal |
ships Keeps a session taking turns until its goal's check passes. |
nodecode-guard |
ships Refuses risky shell commands before they run. |
nodecode-lsp |
Language servers for Nodecode: diagnostics on write, navigation and rename verbs. |
nodecode-mcp |
ships Tools from MCP servers you list in the config. |
nodecode-perplexity |
Perplexity web search: sign in with a Pro/Max account, or use a key, and search from eval. |
nodecode-prs |
ships Pull requests ranked and reviewed minutes after each push. |
nodecode-qa |
ships Anonymous usage counts, one page a week, sent only if you say so. |
nodecode-security-audit |
Cloudflare's security-audit skill: multi-phase security audits with independently verified, machine-readable findings. |
nodecode-team |
ships Several sessions work one task together in a shared folder. |
nodecode-typesafe |
TypeSafe: typed judgments over a state (System One), called through eval. |
nodecode-web-provider |
Web search engines: Google, Startpage, DuckDuckGo, Ecosia, Mojeek, SearXNG and their merge, keyless. |
nodecode-websearch |
ships Web search and page fetch; no key needed. |
| Folder | What it does |
|---|---|
nodecode-channel-discord |
ships Talk to nodecode through a Discord bot. |
nodecode-channel-email |
Talk to Nodecode by email: a mailbox in, threaded replies out. |
nodecode-channel-imessage |
Talk to Nodecode over iMessage, through a BlueBubbles server on a Mac. |
nodecode-channel-x |
Talk to Nodecode on X: replies under mentions from allowed people, as a bot account of its own. |
nodecode-channel-kit |
ships Shared plumbing for the chat bots; comes with Discord or Telegram. |
nodecode-channel-matrix |
Talk to Nodecode through a Matrix account; unencrypted rooms for now. |
nodecode-channel-whatsapp |
Talk to Nodecode on WhatsApp, as a linked device of the bot's own number. |
nodecode-channel-slack |
Talk to Nodecode through a Slack app. |
nodecode-channel-telegram |
ships Talk to nodecode through a Telegram bot. |
nodecode-link |
ships Open this machine's page from anywhere; /link on turns it on. |
nodecode-web |
ships Use nodecode in a browser tab; nodecode web opens it. |
What an entry is. A folder in a public git repository, pinned at one
commit that a person here read before merging. The folder is the whole
repository, or one folder of it named by path, the way this repository's
own cells are listed. Installing one clones that
commit and nothing moves it afterwards. An cell runs inside Nodecode with
full access to your files and keys, so every entry is pinned and every
change to one is a new pull request that gets read the same way.
- Put your cell in a public repository with its
.asdat the top, or at the top of one folder of it. The folder contract is in Nodecode'ssrc/CELLS.md; start fromtemplate/. Vendor anything beyondnodecodeand the shipped cells undervendor/. An entry never depends on another entry here. - Open a pull request that adds one entry to
index.json, keeping the list sorted by name:
{
"name": "nodecode-weather",
"git": "https://github.com/someone/nodecode-weather",
"commit": "3f9a1c7e2b8d4f60a5e19c0b7d2e4a6f8c1b3d5e",
"description": "Current weather and a 3-day forecast, as a tool the model can call.",
"license": "MIT",
"depends_on": ["nodecode"],
"platforms": ["linux", "macos", "windows"]
}| Field | Rule |
|---|---|
name |
Your primary system's name, which is your .asd file's name. a-z, 0-9, ., _, -. It can't be a name Nodecode ships. |
git |
An https:// URL. |
commit |
The full 40-character commit id. A branch or a short id is refused. |
path |
Optional. The folder inside the repository the cell is, as a/b, when it isn't the whole repository. This repository's own are providers/nodecode-x, tools/nodecode-x, rooms/nodecode-x. |
description |
Exactly your primary system's :description. |
license |
Your .asd's :license. Required. |
depends_on |
Exactly the systems your .asd depends on from outside your folder. |
platforms |
Optional. Leave it out when the cell runs on Linux, macOS and Windows. |
- Before the index is published,
.github/check.shinstalls every entry into a scratch home with a Nodecode release and loads it; an index that fails is not served. Nodecode itself refuses an entry whose clone doesn't match its line: a differentHEAD, a different primary system, a description ordepends_onthat isn't the.asd's, or a symbolic link anywhere in the cell's folder. - A maintainer reads the code at that commit and merges.
To update your cell, open a pull request that changes commit (and
description or depends_on if they changed).
.github/check.sh # nodecode on PATH
.github/check.sh ./nodecode # or a binary you nameIt works in a scratch home and never touches your own ~/.nodecode.
One cell's own tests run against a Nodecode source tree (the commit
.github/nodecode-rev names, read from ~/nodecode/nodecode or
NODECODE_SRC), offline, in a scratch home:
.github/test-cell.sh tools/nodecode-guardEvery .lisp and .asd file here passes the structural lint Nodecode's own
sources pass (src/tools/lint-structure.lisp, read from Nodecode main). CI
runs it on every pull request; locally it needs sbcl:
.github/lint.sh