Borrowing it
Nothing to install: this file belongs to automateyournetwork/netclaw. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/automateyournetwork/netclaw/main/CLAUDE.mdgit clone --depth 1 https://github.com/automateyournetwork/netclawWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/instructions/automateyournetwork/netclaw/claude-md)<a href="https://agentmods.dev/instructions/automateyournetwork/netclaw/claude-md"><img src="https://agentmods.dev/badge/instructions/automateyournetwork/netclaw/claude-md.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.10723 | $0.10723 |
| Opus 5 | $0.05361 | $0.05361 |
| Sonnet 5 | $0.02145 | $0.02145 |
| Haiku 4.5 | $0.01072 | $0.01072 |
Grade A, and why
netclaw CLAUDE.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured today.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 245 lines — stays where its author put it; the contents beside it link to each section on GitHub.
netclaw Development Guidelines
Auto-generated from all feature plans. Last updated: 2026-09-03
Active Technologies
- N/A (stateless server; subscription state held in-memory during runtime) (003-gnmi-mcp-server)
- Python 3.10+ + FastMCP (MCP framework), azure-mgmt-network, azure-mgmt-resource, azure-identity (DefaultAzureCredential), gait_mcp (audit logging) (004-azure-network-mcp)
- N/A (stateless; reads from Azure ARM APIs) (004-azure-network-mcp)
- JavaScript (ES2022) / HTML5 / CSS3 for Canvas components; SKILL.md for skill definition + OpenClaw Canvas/A2UI framework (rendering primitives), existing MCP servers (data sources) (005-canvas-a2ui-integration)
- N/A (stateless visualization — all data fetched on demand from MCP servers) (005-canvas-a2ui-integration)
- Python 3.10+ + FastMCP (mcp SDK), httpx (async HTTP client), python-dotenv (001-suzieq-mcp-server)
- N/A (stateless proxy to SuzieQ REST API) (001-suzieq-mcp-server)
- Python 3.10+ + anthropic (SDK with count_tokens), toon-format (TOON serialization), FastMCP (existing MCP framework) (006-token-optimization)
- N/A (in-memory session ledger; no persistent storage) (006-token-optimization)
- N/A (no server code — Jenkins plugin is Java-based and runs inside Jenkins). Skill documentation and configuration files only. + Jenkins 2.533+ with MCP Server plugin (v0.158+), MCP Java SDK 0.17.2 (007-jenkins-mcp-server)
- N/A (stateless — Jenkins maintains all job/build state) (007-jenkins-mcp-server)
- TypeScript/Node.js (community MCP server). No netclaw-authored server code — configuration and skill documentation only. + @zereight/mcp-gitlab (npm package), Node.js 18+ (008-gitlab-mcp-server)
- N/A (stateless proxy to GitLab REST API) (008-gitlab-mcp-server)
- Python 3.10+ (community MCP server). No netclaw-authored server code — configuration and skill documentation only. + mcp-atlassian (pip package), Python 3.10+ (009-atlassian-mcp-server)
- N/A (stateless proxy to Atlassian REST APIs) (009-atlassian-mcp-server)
- Python 3.10+ (consistent with existing NetClaw MCP servers) + FastMCP (MCP framework), asyncio (UDP receivers), pysnmp (SNMP trap decoding), python-syslog-rfc5424 (syslog parsing), xflow (IPFIX/NetFlow decoding) (010-telemetry-receivers)
- In-memory only (data lost on restart, acceptable for demo/testing scope) (010-telemetry-receivers)
- Markdown (documentation reorganization) + N/A (pure markdown files, OpenClaw read tool) (011-soul-optimization)
- Filesystem (
~/.openclaw/workspace/) (011-soul-optimization) - Python 3.10+ (consistent with existing NetClaw MCP servers) + FastMCP (MCP framework), httpx (async HTTP client), python-dotenv (environment variables) (012-gns3-mcp-server)
- N/A (stateless proxy to GNS3 REST API) (012-gns3-mcp-server)
- Python 3.10+ (community MCP server uses prisma_sase SDK) + prisma-sdwan-mcp (community), prisma_sase SDK (OAuth2 client) (013-prisma-sdwan-mcp-server)
- N/A (stateless proxy to Prisma SASE REST API) (013-prisma-sdwan-mcp-server)
- N/A (Remote MCP managed service) + Datadog MCP remote endpoint, DD_API_KEY, DD_APP_KEY (016-datadog-mcp-server)
- N/A (stateless proxy to Datadog APIs) (016-datadog-mcp-server)
- Python 3.10+ (consistent with NetClaw MCP servers) + blender-mcp (community, via uvx), Blender 3.0+ (user-installed) (024-blender-3d-viz)
- N/A (stateless - visualization is ephemeral in Blender) (024-blender-3d-viz)
- Python 3.10+ (community MCP server with Aruba CX REST API client) + aruba-cx-mcp-server (community), httpx or requests (REST client) (025-aruba-cx-mcp-server)
- N/A (stateless proxy to Aruba CX REST API) (025-aruba-cx-mcp-server)
- N/A (Remote MCP server - no code required) + N/A (Remote MCP managed service) (026-devnet-content-search-mcp)
- N/A (stateless - all data from remote API) (026-devnet-content-search-mcp)
- Python 3.10+ (MCP servers, policy scripts), Bash (installation) + NVIDIA OpenShell CLI (uv tool), Docker (container runtime), existing FastMCP servers (027-netshell-security)
- Local filesystem for policies and audit logs; no database (027-netshell-security)
- Bash (installation scripts), Python 3.10+ (DefenseClaw requires), Go 1.25+, Node.js 20+ + DefenseClaw (Cisco), Docker (container runtime) (027-netshell-security)
- SQLite (DefenseClaw audit logs), optional SIEM (Splunk HEC, OTLP) (027-netshell-security)
- Node.js 18+ (Check Point MCPs are NPM packages), Bash (install scripts) + @chkp/* NPM packages (15 total), npx (MCP execution) (031-checkpoint-mcp-integration)
- N/A (stateless proxy to Check Point APIs) (031-checkpoint-mcp-integration)
- Python 3.11+ + FastMCP, sqlite3 (stdlib), chromadb, sentence-transformers, torch (CPU) (033-memory-mcp)
- SQLite (facts, decisions, links) + ChromaDB (embedded sessions) in ~/.openclaw/memory/ (033-memory-mcp)
- Markdown (SOUL.md), Python 3.10+ (Memory MCP already implemented) + Memory MCP Server (Feature 033), GAIT, OpenClaw workspace (034-layered-memory-integration)
- SQLite (facts, decisions, links), ChromaDB (session embeddings), MEMORY.md (long-term) (034-layered-memory-integration)
- Markdown (documentation files) + N/A (pure documentation) (038-docs-hud-refresh)
- Python 3.10+ (consistent with NetClaw MCP servers) + FastMCP (MCP framework), tweepy 4.x (Twitter API v2 client), python-dotenv (039-twitter-x-integration)
- Memory MCP (tweet history for deduplication, 30-day retention) (039-twitter-x-integration)
- Python 3.10+ (consistent with existing NetClaw MCP servers) + FastMCP (MCP framework), tweepy 4.x (Twitter API v2 client), python-dotenv (040-twitter-mentions)
- Memory MCP (feature 033) for interaction history; in-memory tracking for processed mention IDs (040-twitter-mentions)
- Node.js 18+ (for @twilio-alpha/mcp), Python 3.10+ (for webhook server and skills) + @twilio-alpha/mcp (NPM), FastMCP (Python webhook), Twilio SDK, openai-whisper-api (existing skill for STT) (042-twilio-voice-mcp)
- Memory MCP (feature 033) for call logging and audit trail (042-twilio-voice-mcp)
- Python 3.10+ (webhook server, skills), Node.js 18+ (Twilio MCP) + FastMCP, Twilio SDK, @twilio-alpha/mcp, Anthropic SDK, httpx, existing MCP servers (pyATS, CML, GNS3, PagerDuty, RFC, Memory, Twitter) (043-full-voice-integration)
- Memory MCP (conversation context per caller ID), SQLite (call audit logs) (043-full-voice-integration)
- Python 3.10+ (skill logic), No custom MCP server code (uses built-in UE5 MCP) + httpx (HTTP client for MCP), Unreal Engine 5.8+ (user-installed with MCP plugin) (044-ue5-mcp-network-viz)
- N/A (stateless - visualization is ephemeral in UE5) (044-ue5-mcp-network-viz)
- Python 3.10+ (matches the existing
ue5-network-vizskill and the rest of NetClaw) + httpx (existing UE5 MCP HTTP/JSON-RPC client,ue5_mcp_client.py), no new third-party packages required (045-ue5-digital-twin) - N/A — all new state (sticky alert flags, live-mode status, session history buffer, manual zoom groupings) is in-memory for the lifetime of the running skill process; nothing persists across a NetClaw restart (045-ue5-digital-twin)
- Python 3.10+ (skill logic, consistent with the rest of NetClaw) + Three.js r147 pinned (
[email protected]— last release with both classic UMD core and non-module OrbitControls/GLTFLoader addons) vendored as static JS, the newly vendored communitysketchfab-mcp-server(Node.js,mcp-servers/sketchfab-mcp-server/, registered assketchfab-mcpinconfig/openclaw.json) for real-stencil model search/download, and NetClaw's existing topology-source skills/MCP servers (CML lab tooling,gns3-mcp-server,clab-mcp-server,eve-ng-mcp-server,nautobot-mcp-v2,netbox-mcp-server,infrahub-mcp,ipfabricintegration,forward-mcp) consumed as-is, not modified (046-threejs-network-viz) - N/A for rendering itself; generated visualizations are written as timestamped, uniquely-named
.htmlfiles to a persistent NetClaw workspace output directory (per Clarification session 2026-07-05) — never overwritten, never ephemeral (046-threejs-network-viz) - Python 3.10+ (matches every other script in
scripts/, e.g.scan-all-mcp-source.py,register-all-mcps.py) + None beyond the Python standard library (os,json,re) — no new third-party packages (047-docs-inventory-reconciliation) - N/A (reads existing
workspace/skills/directory tree andconfig/openclaw.json; writes no persistent state) (047-docs-inventory-reconciliation) - Node.js 18+ (official
chrome-devtools-mcpserver — no NetClaw-authored server code); Bash (setup/enable script, consistent withscripts/*-enable.shconvention); Markdown (skill + MCP documentation) +chrome-devtools-mcp(npm package, official Chrome DevTools team release, MIT-style OSS), Node.js 18+, a locally installed Chrome/Chromium binary (stable channel by default) (048-chrome-devtools-browser-inspection) - N/A for NetClaw itself (stateless proxy to a local browser process). A persistent Chrome profile directory on disk (
~/.openclaw/chrome-devtools/profileby default, overridable viaCHROME_DEVTOOLS_PROFILE_DIR) holds cookies/session state for manually authenticated sites — this is Chrome's own state, not a NetClaw-managed database. (048-chrome-devtools-browser-inspection) - Bash (matches every existing NetClaw install/enable script and PR #96's own implementation), Python 3.10+ (for the coverage-check script, extending the existing
scripts/verify-inventory-counts.pypattern) + None beyond what's already vendored — PR #96's ownscripts/lib/*.sh, the repo's existing Python stdlib-only tooling convention (049-merge-modular-installer) - N/A (installer logic + a plain-text component manifest at
~/.openclaw/netclaw-components.conf, per PR #96's own design) (049-merge-modular-installer) - Bash (install function, matching every existing
scripts/lib/install-steps.shentry), Markdown (skill documentation) + OpenClaw's ClawHubcomputer-useskill (consumed as-is, no fork); apt packagesxvfb,xfce4,xfce4-terminal,xdotool,scrot,imagemagick,dbus-x11,x11vnc,novnc,websockify(all confirmed present in this host's apt repositories;dbus-x11,imagemagick,scrot,xvfbalready installed) (050-computer-use-desktop) - N/A — the virtual desktop's state is ephemeral (X11 session state), nothing NetClaw-managed persists across a restart (050-computer-use-desktop)
- Python 3.10+ (daemon federation layer + n2n-mcp, matching + Existing
bgp-daemon-v2.py(listener, protocol (052-n2n-federation) - SQLite at
~/.openclaw/n2n/federation.db(consent records, grants, (052-n2n-federation) - Python 3.10+ (daemon federation layer + n2n-mcp, matching + Existing
bgp-daemon-v2.py+bgp/federation/*(053-n2n-ergonomics) - Extend the existing SQLite at
~/.openclaw/n2n/federation.dbwith (053-n2n-ergonomics) - Python 3.10+ (daemon federation layer +
n2n-mcp, matching 052/053), Node.js 18+/ES2022 (HUD), Bash (installer), no new languages + Existingbgp-daemon-v2.py+bgp/federation/*(manager, channel, service, inventory, authorization, invocation, chat, gateway, negotiate, tasks, audit), FastMCP (n2n-mcp), Python stdlibjson/sqlite3/asyncio/ssl/socket;cryptography(already a repo dependency, spec 003) for self-signed key generation and pinned-key verification. No new third-party packages. (056-in2n-internal-federation) - Extend the existing SQLite at
~/.openclaw/n2n/federation.dbwith iN2N tables:risk(name/description/role/enabled-stacks),member(risk-local id, pinned key, transport binding, scope, health, state),enrollment_token(single-use). Reusedelegated_taskfor internal delegation; internal delegations are recorded in the existingremote_invocation_recordaudit table with achannel_kinddiscriminator. Pinned keys and the risk's own key stored under~/.openclaw/n2n/keys/. (056-in2n-internal-federation) - Python 3.10+ (daemon + federation package + tooling), Bash (installer/service generator glue), Node.js 18+/ES2022 (HUD posture render only) + Existing
bgp-daemon-v2.py+bgp/federation/*(service, risk, router, internal_channel, audit, gateway, manager, invocation, tasks); the installeddefenseclawCLI (~/.local/bin/defenseclaw,docs/DEFENSECLAW.md); the installedopenshellCLI (~/.local/bin/openshell);git(GAIT trail); systemd--user. Python stdlib only (asyncio,subprocess,sqlite3,json,pathlib,shutil,time). No new third-party packages. (057-in2n-production-enforcement) - Extend existing SQLite
~/.openclaw/n2n/federation.db(member health fields, per-member service binding); new GAIT git repo at~/.openclaw/n2n/gait/(unbounded, FR-012a); systemd units under~/.config/systemd/user/; env under~/.openclaw/mesh.systemd.env+ per-member env files (existing pattern). (057-in2n-production-enforcement) - kramdown-rfc Markdown → RFCXML v3 (via
kdrfc); Markdown for supporting docs. No application code. +kramdown-rfc(Ruby gem, provideskdrfc),idnits(I-D nits checker),xml2rfc(invoked bykdrfc). Ground-truth source: the reference implementationbgp/constants.py,channel.py,agent.py,internal_channel.py,negotiate.py,risk.py(read-only; cited, not modified). Reference set: RFC 2119/8174/4271/8259 + JSON-RPC 2.0 (normative); RFC 7301/6455/7435/6335/8126, MCP, A2A,draft-yan-a2a-device-agent-applicability(informative). (059-ncfed-internet-draft) - N/A — the deliverable is a document; no runtime state. (059-ncfed-internet-draft)
- Python 3.10+ (daemon +
bgp/federation/*, matching 052/053/056/057); Node.js 18+/ES2022 (HUD render only); Bash (installer/patch) + Existingbgp-daemon-v2.py+bgp/federation/*(channel, internal_channel, risk, service, manager, audit, gateway, negotiate);cryptography(already a repo dependency — keys, CSRs, X.509 issuance/verification); lego (single-binary ACME client, vendored/downloaded at install, drives DNS-01 across 100+ providers); Python stdlibssl/asyncio/sqlite3/json. No new Python packages. (060-claw-cert-security) - Extend existing SQLite
~/.openclaw/n2n/federation.db(peer trust columns, credential + rotation-event tables); key material under~/.openclaw/n2n/keys/(CA, host credential, ACME account) with0600/0700permissions (060-claw-cert-security) - Python 3.10+ (server, matching repo MCP convention; memory-mcp packaging style with hatchling pyproject), Node.js 18+/ES2022 (HUD panel + Express endpoints), Bash (installer step) +
fastmcp/mcp,chromadb>=0.4,sentence-transformers>=2.2(+torchCPU),rank_bm25,pymupdf(PDF),beautifulsoup4+httpx(HTML/URL),python-docx,openpyxl,python-pptx,vsdx(modern office), LibreOffice headless (soffice, optional system package) for legacy DOC/XLS/PPT/VSD conversion (062-rag-mcp) ~/.openclaw/rag/— ChromaDB (chroma/, dense vectors), SQLite (rag.db: document registry, retrieval log, telemetry, schema version), BM25 pickles (bm25/<collection>.pkl), retained originals (sources/), intake dir (intake/). Never touches~/.openclaw/memory/(FR-030) (062-rag-mcp)- Python 3.10+ (daemon +
bgp/*,bgp/federation/*); Bash (none new); Node/ES2022 (HUD posture render only) + existingbgp-daemon-v2.py,bgp/agent.py,bgp/session.py,bgp/federation/{tls,service,manager,channel,inventory,posture}.py; stdlibssl/asyncio/sqlite3. No new third-party packages. (063-ncfed-wire-hardening) - extend existing SQLite
~/.openclaw/n2n/federation.db(reusefederation_peer.endpoint_host/endpoint_port/endpoint_updated_at); reuse keys under~/.openclaw/n2n/keys/. No new stores. (063-ncfed-wire-hardening) - Python 3.10+ (daemon +
bgp/federation/*, matching 052–063); Markdown (SOUL/skill docs + NCFED draft §11 for -01) + Existing only —bgp/federation/inventory.py(card),router.py(selection),invocation.py/gateway.py(retrieval turn), the feature-062 rag-mcp (rag_list,rag_search). No new third-party packages. (064-knowledge-capability-cards) - Reuses
~/.openclaw/rag/rag.db(documents registry, read-only for advertisement) and the issued capability card. Per-peer visibility reuses existing federation.db rows. No new store. (064-knowledge-capability-cards) - Python 3.10+ (daemon +
bgp/federation/*, matching 052–064) + Existing only —bgp/federation/replication.py(NEW: manifest/batch client+server logic, size-cap check, task worker),tasks.py(TaskManager/delegated_task, reused as-is for the async job),authorization.py(reused, newtarget_type="knowledge_replica"grant),negotiate.py(TIER0_DENIEDgains"knowledge/replicate"),channel.py(existingch.call()framing, already chunks messages >64 KB),knowledge.py/inventory.py(card gainsembedding_model;build_entries()excludeskind='replica'rows), rag-mcp'sstorage/chroma_store.py(gains a paginated collection-export read and a rename-on-verify write path) andstorage/registry.py(documents.kindgains'replica'; new nullable provenance columns). No new third-party packages. (065-chroma-vector-replication) - Extends the existing rag-mcp
documentstable in~/.openclaw/rag/rag.db(feature 062) with a'replica'kindand new nullable columns (source_peer_identity,source_collection_id,source_embedding_model,replicated_at). Extends the existing Chroma store at~/.openclaw/rag/chroma/with one collection per replica, named from source peer + sourcecollection_id(FR-016) — no new database, no new top-level store. (065-chroma-vector-replication) - Python 3.10+ (daemon +
bgp/federation/*, matching 052–065); Dart 3.x / Flutter 3.x (new mobile client,mobile/netclaw-mobile/) + Python:websockets(new, but already present transitively in this environment per Phase 0 research — declared explicitly inprotocol-mcp/requirements.txt) for the Border-side WS listener;qrcode(new, pure-Python) for rendering the enrollment QR; existingtls.py/FederationService.host_credential()(060) reused as-is for the domain-verified SSL context; existingmanager.py/risk.pyenrollment-token and member-pinning code reused, extended with anode_typecolumn. Dart: a WebSocket client package (web_socket_channelor equivalent), a QR-scanner package (mobile_scanneror equivalent), platform secure-storage packages (Keychain/Keystore-backed) for the enrollment key, and platform push packages (APNs/FCM) — exact package choices are an implementation detail of Phase 2 tasks, not fixed here. (066-netclaw-mobile-ncfed-edge) - Extends the existing SQLite
~/.openclaw/n2n/federation.dbmembertable with anode_typecolumn (agentdefault |service|edge); reuses its existingpinned_key/key_fingerprintcolumns for the edge node's TOFU-pinned key — no new table. On the phone: platform secure hardware (iOS Keychain/Secure Enclave, Android Keystore) holds the enrollment private key; app-local storage (not federation.db) holds the message feed and connection state. (066-netclaw-mobile-ncfed-edge) - Python 3.10+ (daemon +
bgp/federation/*, matching 052–067); Dart 3.x / Flutter 3.x (extendsmobile/netclaw-mobile/) + Python: none new — reusespush_to_edge(),resolve_approval(),RiskRouter/member.scope,TaskManager. Dart:local_auth(biometric gating, US1),camera(photo/video capture, US2/US3) — exact audio-recording package (distinct from 067's speech-to-text, which discards audio after transcribing) is a Phase 2 task detail. (068-ncfed-mobile-biometrics-capture) - No new tables —
member.scopegains capture-capability entries (same column, same JSON shape 066/067 already write);approval_request's existingresolved_viacolumn gains a new value ("biometric"), no schema change. (068-ncfed-mobile-biometrics-capture) - Python 3.10+ (daemon +
bgp/federation/*, matching 052–066); Dart 3.x / Flutter 3.x (extendsmobile/netclaw-mobile/, the same codebase 066 established) + Python: none new — reusesgateway.run_agent_turn(),tasks.py'sTaskManager,edge.py'sEdgeChannel/EDGE_METHODS,invocation.py'shandle_task_status/result/cancelexactly as-is. Dart: an on-device speech-to-text package for US4 (voice → text before sending, research D7) and (for US5) reusesmobile_scanner(already added in 066) for the QR half of the device deep link; thenetclaw://device/<id>URI-scheme half needs a deep-link/app-links package (e.g.app_linksor platform intent filters) — exact package choice is a Phase 2 task detail, not fixed here. (067-ncfed-mobile-command-channel) - No Border-side schema change —
session_key=f"n2n-edge-{member_id}"passed torun_agent_turnalready gives each enrolled device its own agent session (research D6); the per-device conversation history itself (FR-007) is entirely on-device, a second JSON-Lines store mirroring 066'sMessageFeedStorepattern (ConversationStore). (067-ncfed-mobile-command-channel) - Swift 5.0 (existing
ios/Runner/*.swift,SWIFT_VERSION = 5.0in + None new. Reuses what's already inpubspec.yaml:local_auth ^3.0.2(071-ios-mobile-port) - N/A — Secure Enclave key storage is managed entirely by the Keychain/Secure Enclave (071-ios-mobile-port)
- Swift 5.0 (new watch app target + new
WatchRelayPlugin.swifton the phone +WatchConnectivity(Apple system framework, phone + watch sides — no new (072-apple-watch-companion) - N/A on the watch — it holds no persistent state of its own; every view (Approvals, (072-apple-watch-companion)
- JavaScript ES2022 (ESM), Node 22+ for tooling + three.js
^0.170.0(existing),OrbitControls, (072-hud-2-org-chart) - N/A — stateless client; all state from
/api/n2nand/api/graph(072-hud-2-org-chart) - Dart 3.x / Flutter 3.x (extends
mobile/netclaw-mobile/, SDK constraint^3.12.2per pubspec.yaml); Swift 5.0 (extends theWatchApp Watch Apptarget from spec 072); Python 3.10+ (the one Border-side addition,authorization.py/service.py, matching specs 052-072) +flutter_local_notifications(new — local notification posting, Darwin/Android notification actions, iOS badge control); existingfirebase_messaging/firebase_core(unchanged, remote-push path stays out of scope per Assumptions); existingapp_links(extended, not replaced, per research D4); watchOSAVSpeechSynthesizer(system framework, no new dependency, watch-side only) (073-push-notifications-sync) - Extends the existing phone-local JSON-Lines
MessageFeedStoreand whole-file JSONConversationStore(both under the app's documents directory) with new fields — no new store, no new database (073-push-notifications-sync) - Python 3.10+ (all
scripts/*.py), Bash (CI wiring, catalog is a Bash array) + None — Python standard library only, per the convention every existing (075-mcp-config-reconciliation) - N/A — all state is existing repository files; this feature adds no datastore (075-mcp-config-reconciliation)
- Python — interpreter choice is a live decision, not a default (see R7). +
nornir3.5.0,napalm5.2.0,netmiko(>=4,<5 pernornir-netmiko), (076-multivendor-cli-driver) - No database. A generated inventory cache on disk (regenerable, credential-free); an (076-multivendor-cli-driver)
- on-disk cache, one JSON file per
(ostype, version)under~/.openclaw/cisco-psirt/. No (078-cisco-psirt-vulnerability) - Python 3.10+, system interpreter. Unlike spec 076 this needs no dedicated venv — +
mcp>=1.2.0,<2andhttpx>=0.27.0,<1. Two packages, identical to spec 078's (080-fortinet-coverage) - None. Stateless proxy to three appliance APIs. Change baselines (US3) write under a (080-fortinet-coverage)
- Python 3.10+, system interpreter. No dedicated venv — two pure-HTTP packages move +
mcp>=1.2.0,<2andhttpx>=0.27.0,<1. Identical to specs 078 and 080. Themcp(081-bgp-registry-intel) - None on disk. Per-source in-memory TTL cache only (clarification Q3): RPKI 5 min, routing (081-bgp-registry-intel)
- Python 3.10+, system interpreter. No dedicated venv — the four libraries are already (082-document-generation)
- none. Files land in
workspace/output/document-mcp/(gitignored, feature 046's convention). (082-document-generation) - Python 3.10+. The vendored server runs from its own virtualenv; NetClaw authors no (083-zabbix-nms)
- none. The NMS holds the history. (083-zabbix-nms)
- Dart 3.x / Flutter (SDK constraint
^3.12.2, matchingmobile/netclaw-mobile/pubspec.yaml); Swift 5.0 (existingios/Runner/*.swift,ios/WatchApp Watch App/*.swift); Bash (CI workflow is declarative YAML, no new scripting language) + No new Dart packages — reusesflutter_local_notifications,firebase_messaging,firebase_core,local_auth,app_links,web_socket_channel,flutter_secure_storagealready inpubspec.yaml. New native-only surface: Apple's ActivityKit (Live Activity, Story 7) and WidgetKit (watchOS complication, Story 8) — both system frameworks, zero new third-party dependencies, consistent with every prior mobile spec (066-073) adding no new packages beyond what a given story strictly needs. (099-mobile-prerelease-sweep) - N/A — reuses existing on-device stores (
MessageFeedStore,ConversationStore,ApprovalClientin-memory state,flutter_secure_storagefor enrollment) for Dashboard data; no new persistence introduced. (099-mobile-prerelease-sweep) - JavaScript ES2022 (ESM), Node 22+ for tooling. No TypeScript in this package. +
three0.170.0 → 0.185.1 (the only dependency change); existinggsap,lil-gui,vite5.4 unchanged. Addons consumed as-is:OrbitControls,CSS2DRenderer,EffectComposer+RenderPass/UnrealBloomPass/ShaderPass/OutputPass/SMAAPass/AfterimagePass/FilmPass/GlitchPass,VignetteShader,RGBShiftShader. No new package. (101-hud-threejs-modernization) - N/A — stateless client. All state from
GET /api/n2nandGET /api/graph; nothing persisted. (101-hud-threejs-modernization) - JavaScript ES2022 (ESM), Node 22+ for tooling. No TypeScript. +
[email protected]— no new package. New import surfaces:three/webgpu(WebGPURenderer,PostProcessing,Lighting),three/tsl(node functions),three/addons/lighting/ClusteredLighting.js, andthree/examples/jsm/tsl/display/*(BloomNode,RGBShiftNode,SMAANode,AfterImageNode,FilmNode). Force-directed solver is hand-written, not a dependency (research R4). (102-hud-webgpu-interactive-layout) - NEW — a single JSON file written by
server.jsat a fixed path, holding per-preset node positions and camera pose. First persistent state the HUD client has ever had./api/n2nand/api/graphunchanged (FR-032). (102-hud-webgpu-interactive-layout) - Dart 3.x / Flutter, SDK constraint
^3.12.2(frompubspec.yaml) + No new packages. Reusesfirebase_messaging ^16.4.3,firebase_core ^4.12.1,flutter_local_notifications ^22.2.0, all already present. Continues the 066–073 and 099 precedent of adding no dependency a story does not strictly require. (107-push-render-deeplink) - Existing on-device stores, extended not replaced —
MessageFeedStore(JSON-Lines) and, unchanged,ConversationStore. No migration of stored history. (107-push-render-deeplink) - Dart 3.x / Flutter (SDK per
mobile/netclaw-mobile/pubspec.yaml), Swift 5.0 (ios/Runner/*.swift) — same stack as specs 066–103, unchanged. + None new.local_auth(already a dependency, already used byapproval_confirmation.dart) covers US2's biometric gate. US1 is pure Flutter widget code. US3 uses Flutter's and Xcode's existing command-line toolchain (flutter build ipa,xcrun altool) — no package added. (105-ios-appstore-readiness) - No new storage. US1/US2 read/write the existing
EnrollmentStore(ncfed_enrollment.json) exactly as today; nothing new is persisted. (105-ios-appstore-readiness) - Dart 3.x / Flutter (SDK
^3.12.2permobile/netclaw-mobile/pubspec.yaml), Swift 5.0 (ios/WatchApp Watch App/*.swift, US5's watch-side haptics only) — same stack as specs 066–108, unchanged. + Two new:flutter_markdown_plus(^1.0.12, US2 — see research.md R1) andshare_plus(^13.3.0, US2 — see research.md R2). Everything else reuses existing dependencies:flutter_secure_storage(US4's app-lock preference),local_auth(US4, already used byapproval_confirmation.dart),flutter_local_notifications(US3). (109-mobile-polish-pass) flutter_secure_storagegains two new keys (US4: app-lock enabled/disabled boolean, grace-period duration in seconds — research.md R5). No other new persisted state; US6's search/filter state is explicitly transient (FR-015) and US7 adds no state at all, only wiring. (109-mobile-polish-pass)- Dart 3.x / Flutter (SDK
^3.12.2permobile/netclaw-mobile/pubspec.yaml), Swift 5.0 (ios/Runner/*.swift, newAppIntentstarget membership) — same stack as specs 066–110, unchanged. Python 3.10+ for the one Border-side addition (bgp/federation/*, matching specs 052–110). + No new Dart or Python packages. Swift: Apple'sAppIntentsframework (system framework, iOS 16+, ships with the SDK — not a package dependency). Reuses existingEdgeClient,EdgeAskClient,EdgeIdentityPlugin,ConversationStore,LocalNotifications,DeviceHeartbeatStore(Dart) andAuthorizer(Python) as-is. (111-siri-app-intents) - No new store.
ConversationStore's existingoriginfield gains one new valid value,'siri'(research.md R5) — no schema change, no migration. (111-siri-app-intents) - Swift 5.0 (
ios/WatchApp Watch App/ApprovalsView.swift,AskView.swift;ios/WatchComplication/HeartbeatComplication.swift,PendingApprovalComplication.swift) — same stack as specs 072/099, unchanged. No Dart/Flutter changes in this spec. + None new.SwiftUI'shandGestureShortcut(_:)(watchOS 11+, system framework) andWidgetKit's.accessoryCornerWidgetFamilycase (watchOS 9+, system framework) — both ship with the SDK, not package dependencies. (112-watch-double-tap-complication) - N/A — neither item reads or writes any new state. Both complications continue reading
HeartbeatStatusStore/PendingApprovalCountStoreexactly as today. (112-watch-double-tap-complication) - Swift 5.0 (
ios/LiveActivityWidget/*.swift, new + existing;ios/Runner/LiveActivityBridge.swift), Dart 3.x / Flutter (lib/ncfed/live_activity.dart,lib/ncfed/conversation_store.dart,lib/ncfed/device_deep_link.dart,lib/screens/chat_screen.dart) — same stack as specs 099/109–112, unchanged. + None new for the app itself.ActivityKit'sLiveActivityIntentprotocol (iOS 17+, system framework) andText(timerInterval:)(system SwiftUI API) — both ship with the SDK. Build-time only: thexcodeprojRuby gem (already available in this environment, already used for the identical class of problem in spec 071) to add the three new Swift files to the correct Xcode target(s) (research.md R5). (113-live-activity-interactive-inflight) - N/A — no new persisted state.
ConversationStore's two new callbacks (onAdded,onTerminal, research.md R4) are settable function references, exactly like the existingonCompleted, not stored data. (113-live-activity-interactive-inflight) - Swift 5.0 (
ios/NetClawWidget/*.swift, rewriting Xcode's placeholder template content;ios/Runner/WidgetDataStore.swift,ios/Runner/WidgetBridgePlugin.swift, new), Dart 3.x / Flutter (lib/ncfed/widget_data.dart, new;lib/ncfed/device_deep_link.dart, extended) — same stack as specs 099/109–113, unchanged. + None new.WidgetKit'sControlWidget/AppIntentControlConfiguration(iOS 18+, system framework, already the reasonNetClawWidgetExtension's deployment target was bumped in this branch's setup commit) andWidgetCenter(system framework) ship with the SDK. (114-widgets-controlwidget) - One new App Group
UserDefaultsstore (group.ca.automateyournetwork.netclaw.mobile.ios, already registered by the operator) — three keys (health summary/pushedAt/isAlarm, pending count, unread count), mirroring three values that already exist elsewhere on the phone (DeviceHeartbeatStore,ApprovalClient.pending,MessageFeedStore.unreadCount); no new source of truth. (114-widgets-controlwidget) - Dart 3.x / Flutter (SDK
^3.12.2perpubspec.yaml); Swift 5.0 (ios/Runner/*.swift) — same stack as specs 066–114, unchanged. + No new dependencies. ReusesAppIntents(iOS 16+ system framework, already in place from spec 111),FlutterEngineGroup(Flutter SDK, already available, previously unused in this codebase),flutter_secure_storage(already a dependency, used for the new theme preference exactly as specs 109/110 already use it for other settings). (115-siri-reliability-fix) flutter_secure_storagegains one new key (theme preference:system|light|dark). No other new persisted state — conversation-turn recording reuses the existingConversationStoreexactly as today. (115-siri-reliability-fix)- Python 3.10+ (matches
bgp/federation/*, specs 052–115); no new language. +websockets(new — Border-side persistent WS client to the OpenClaw (116-border-turn-latency) - N/A (stateless; no new persistent state — this is a runtime dispatch/performance fix) (116-border-turn-latency)
- Dart 3.x / Flutter (SDK
^3.12.2permobile/netclaw-mobile/pubspec.yaml); + None new. ReusesEdgeAskClient/EdgeRpcSource(Dart,edge_ask_client.dart), (117-siri-voice-tuning) - N/A — no new persisted state (data-model.md: value-only constant change, request-scoped (117-siri-voice-tuning)
- Python 3.10+ (
zoom-rtms-mcp,bgp/federation/zoom_channel.py— matches every + FastMCP (MCP framework, matching repo convention), Zoom's official RTMS (118-zoom-meeting-intelligence) - N/A —
MeetingSession/LiveContextBuffer/avatar state are in-memory only inside (118-zoom-meeting-intelligence) - Python 3.10+ (skill logic, matching every other NetClaw skill); Node.js 18+ + The community
shawnrushefsky/comfyui-mcpserver (Node/TypeScript, MIT (120-comfyui-topology-viz) - N/A — stateless skill; each completed generation is written as an image file plus a (120-comfyui-topology-viz)
- Bash (
scripts/peering-setup.sh, matching its own existing style), Python + None new. Reuses the mesh daemon's existing enrollment/token-issuance (119-mobile-release-readiness) - N/A — no new persisted state. Enrollment continues to live in the existing federation (119-mobile-release-readiness)
- Python 3.10+ (matches every existing NetClaw MCP server and skill; no new + FastMCP (both new MCP servers, matching repo convention), N2G (new — (121-federated-topology-viz)
- N/A — no new persistent storage; images pass inline (base64) over the existing (121-federated-topology-viz)
- Python 3.10+ (matches every existing NetClaw MCP server and skill; no new + FastMCP (
worldlabs-marble-mcp, matching repo convention),httpx(122-worldlabs-topology-viz) - N/A — no new persistent storage of any kind (spec Clarifications Q1/Q2, FR-013, (122-worldlabs-topology-viz)
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- today Changed · -2 lines · -85 tokens per session 148e9956323b
- yesterday Changed · +4 lines · +176 tokens per session c9eec33c7529
- 2d ago Changed · +1 lines · +5 tokens per session e33d39128230
- 6d ago First seen · 242 lines · 10,627 tokens per session scan A f32b7f738f96
netclaw CLAUDE.md is an instructions file published in the GitHub repository automateyournetwork/netclaw (650 stars, last pushed today), licensed Apache-2.0. It adds 10,723 tokens to every session, about $0.0536 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other instructions, from other repositories
next.js AGENTS.md
AGENTS.md instructions for vercel/next.js, covering next.js development guide, codebase structure, monorepo overview, core package: packages/next and other important packages.
codex AGENTS.md
AGENTS.md instructions for openai/codex, covering rust/codex-rs, the codex-core crate, code review rules, crate api surface and model visible context.
vscode buildNext.instructions.md
Working notes and architecture documentation for the new esbuild-based build system in build/next. Use when making changes to the new build pipeline (transpile/bundle commands, NLS plugin, source-map handling, resource copying, or self-hosting watch tasks).
vscode oss-third-party-notices.instructions.md
Instructions for microsoft/vscode, covering vs code oss third-party-notices pipeline, architecture, pipeline flow in ci, applying the notice (cutover) and fallback chain (never fail the build).
langchain AGENTS.md
AGENTS.md instructions for langchain-ai/langchain, covering global development guidelines for the langchain monorepo, corridor security analysis, project architecture and context, monorepo structure and development tools & commands.
spec-kit AGENTS.md
AGENTS.md instructions for github/spec-kit, covering agents.md, about spec kit and specify, quickstart — add a new integration in 5 steps, integration architecture and integrationmanifest — file tracking.