π Website β’ π Wiki β’ π·οΈ Releases β’ π¬ Discussions β’ π Issues
What if the original ClawdBot and NVIDIA NeMo got together and had a baby?
You would get NemoClawd: a next-generation AI identity built at the intersection of rugged autonomy, adaptive intelligence, and real-world execution.
NemoClawd is an integrated workspace that combines the clawdbot Node.js/TypeScript runtime with the NeMo-Agent-Toolkit-develop Python toolkit.
The project uses a bridge-first architecture: Node orchestration calls the Python layer through NemoBridge, and Python executes NeMo workflows through the nat CLI with structured JSON results returned to Node.
In this repository, NemoClawd also includes canvas host branding updates, outbound transcript mirroring, and system-of-record anchoring so runtime behavior and identity settings stay consistent across builds and launches.
The goal is practical: keep Clawdbot-compatible operations while adding NeMo-backed workflow execution in one buildable source tree so that it can operate in enterprise environments.
NemoClawd currently focuses as a "Digital Project Manager".
- Canvas branding now uses NemoClawd assets in
apps/clawdbot-main/src/canvas-host/a2ui/:nemoclawd-favicon.iconemoclawd-apple-touch-icon.pngnemoclawd-logo.png
- Canvas A2UI page title is now
NemoClawd Canvasinapps/clawdbot-main/src/canvas-host/a2ui/index.html. - Canvas host fallback/default page title is now
NemoClawd Canvasinapps/clawdbot-main/src/canvas-host/server.ts. - Outbound assistant transcript mirroring is wired through
deliverOutboundPayloadsinapps/clawdbot-main/src/infra/outbound/deliver.ts. - Mirrored transcript text normalization (including media filename extraction) is implemented in
apps/clawdbot-main/src/config/sessions/transcript.ts.
- A root
package.jsonthat orchestrates the TypeScript build, the upstream Clawdbot build, Python environment bootstrap, NeMo source package builds, and artifact collection. - A root
pyproject.tomlfor a lightweight Python bridge package namednemoclawd-bridge. - A TypeScript bridge in
src/nemo-bridge.tsthat lets Node code invoke Python NeMo workflows through a stable subprocess contract. - A Python bridge in
python_src/nemoclawd_bridge/__main__.pythat exposeshealthandruncommands. - A unified Docker image in
Dockerfileand Compose setup indocker-compose.yml. - Build outputs in root
dist/, localapps/clawdbot-main/dist/, and rootartifacts/.
This project contains both codebases directly under apps/ as normal directories:
apps/clawdbot-mainapps/NeMo-Agent-Toolkit-develop
NemoClawd builds and runs from this single source tree without requiring sibling repositories.
- Root TypeScript bridge compiles to
dist/. - Root Node build script runs
pnpm buildinsideapps/clawdbot-main. - Root Python bootstrap script prepares
apps/NeMo-Agent-Toolkit-develop/.venv, installs packaging tools, and installs the publishednvidia-natruntime. - Root Python build script builds:
- the local
nemoclawd-bridgepackage intoartifacts/python-bridge/ - the local NeMo source checkout into
artifacts/python-nemo-source/
- the local
- Artifact collection indexes Python package outputs in
artifacts/python-nemo-source/and writesartifacts/manifest.json.
- Node uses
NemoBridgefromdist/index.js. NemoBridgelaunchespython -m nemoclawd_bridge ...inside the NeMo virtual environment.- The Python bridge performs one of two actions:
health: reports whether thenatCLI is available.run: invokesnat run --config_file ... --input ...and returns structured JSON to Node.
This subprocess model keeps Python runtime dependencies isolated from the Node runtime while preserving Node-side workflow orchestration.
Each chat.send request is evaluated before execution:
- Job type detection: classifies the request as
text-basedorpurpose-driven. - Circadian phase detection: maps local time to
startup(06-09),focus(09-18),winddown(18-22), orsleep(22-06). - Execution policy:
- blocks non-purpose text work during sleep hours,
- allows overnight purpose-driven work only when urgency indicators are present (for example:
urgent,critical,incident,outage,hotfix).
When blocked, the gateway returns a structured chat.send error payload with reason, phase, and detected job type.
Identity and core runtime defaults are defined in system-of-record.json.
- Canonical assistant name:
NemoClawd - Canonical session key:
nemoclawd-main - Canonical gateway port:
19001
To keep NemoClawd embedded in the system of record, run:
Set-Location "E:\AIEnv_Adam\AIEnv\Storage_of_Programs\NemoClawd\NemoClawd-integrated"
pnpm run sor:verifyVerification output is written to artifacts/system-of-record.status.json.
The following were verified during setup in this workspace:
clawdbot-main:pnpm installandpnpm buildNeMo-Agent-Toolkit-develop: local.venvbootstrap,nat --help, andpython -m build --wheel --sdist
The NeMo source build required a fallback SCM version because this checkout does not currently expose git metadata to setuptools-scm. The build scripts handle that by setting:
SETUPTOOLS_SCM_PRETEND_VERSION=0.0.0SETUPTOOLS_SCM_PRETEND_VERSION_FOR_NVIDIA_NAT=0.0.0
- Node.js 22.12+
- pnpm 10+
- Python 3.11-3.13
- Optional:
uv - Optional: Docker Desktop
Set-Location "E:\AIEnv_Adam\AIEnv\Storage_of_Programs\NemoClawd\NemoClawd-integrated"
pnpm installSet-Location "E:\AIEnv_Adam\AIEnv\Storage_of_Programs\NemoClawd\NemoClawd-integrated"
pnpm run build:allSet-Location "E:\AIEnv_Adam\AIEnv\Storage_of_Programs\NemoClawd\NemoClawd-integrated"
pnpm run smoke:testThis checks the Node -> Python bridge path by asking the Python helper to report whether the nat CLI is available.
Example usage after pnpm run build:
import { NemoBridge } from "./dist/index.js";
const bridge = new NemoBridge();
const health = await bridge.health();
console.log(health.payload);To run a workflow from Node:
import { NemoBridge } from "./dist/index.js";
const bridge = new NemoBridge();
const result = await bridge.runWorkflow({
configFile: "workflows/nemo-sample.workflow.yml",
input: "List five subspecies of aardvarks",
});
console.log(result.payload.stdout);
console.error(result.payload.stderr);The sample workflow in workflows/nemo-sample.workflow.yml follows the upstream NeMo hello-world example and requires NVIDIA_API_KEY.
Set-Location "E:\AIEnv_Adam\AIEnv\Storage_of_Programs\NemoClawd\NemoClawd-integrated"
pnpm run start:clawdbot -- --helpThis launches the built Clawdbot entrypoint and injects default NEMOCLAWD_* environment variables pointing at the NeMo virtual environment.
The integrated container includes both Node and Python runtimes.
Set-Location "E:\AIEnv_Adam\AIEnv\Storage_of_Programs\NemoClawd\NemoClawd-integrated"
docker compose buildSet-Location "E:\AIEnv_Adam\AIEnv\Storage_of_Programs\NemoClawd\NemoClawd-integrated"
docker compose up nemoclawdAfter pnpm run build:all, expected outputs are:
dist/- compiled TypeScript bridgeapps/clawdbot-main/dist/- compiled Clawdbot outputartifacts/python-bridge/-nemoclawd-bridgewheel and sdist buildsartifacts/python-nemo-source/- NeMo source wheel and sdist buildsartifacts/manifest.json- artifact summary
- The integration layer keeps upstream source trees local in
apps/and adds bridge/orchestration code in the root project. - The bridge uses subprocess JSON exchange instead of embedding Python directly into Node, which keeps failure modes easier to debug.
- If the NeMo checkout later includes full git metadata, the fallback SCM version environment variables can be removed.
- Owner: Darrell Mesa
- Contact: darrell.mesa@pm-ss.org
