"Build, link, run, inspect, and debug NuPIC legacy Network API
Scanned 9/8/2026
Install to Claude Code
npx -y skills add VectorSpaceLab/AREX-Skill --skill network-api --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Network Api?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/vectorspacelab-network-api)More formats (shields.io, HTML) on the badges page.
---
name: network-api
description: "Build, link, run, inspect, and debug NuPIC legacy Network API
pipelines and custom PyRegion regions."
disable-model-invocation: true
metadata:
disco-role: operating
license: MIT
---
# NuPIC Legacy Network API
Use this sub-skill when the user asks to build a NuPIC `Network`, add/link regions, initialize/run a Network API pipeline, read region outputs, debug link names, or create a custom Python region. NuPIC legacy is a Python 2.7-era package; Network API workflows normally require `nupic.bindings`, `numpy` 1.12.x-compatible runtime packages, and working Cap'n Proto/`pycapnp` support for some serialization paths.
Do **not** use this sub-skill for every prediction task. If the user wants the higher-level OPF model workflow, route to [`../opf-prediction/`](../opf-prediction/). If the task is about CSV headers, `FileRecordStream`, or model parameter files, route to [`../data-and-configuration/`](../data-and-configuration/). If the task is about encoder, SP, TM, or classifier parameter semantics outside a Network graph, route to [`../htm-algorithms/`](../htm-algorithms/). For package installation/import failures, use the root troubleshooting guide at [`../../references/troubleshooting.md`](../../references/troubleshooting.md) first.
## Fast path
1. Confirm that the legacy runtime can import and construct an empty Network:
```bash
python scripts/network_smoke.py
```
2. Build the graph in this order: `Network()` -> `addRegion(...)` -> attach `RecordSensor.encoder` and `RecordSensor.dataSource` -> set `SPRegion` `inputWidth` -> `link(...)` -> set `predictedField`/modes -> `initialize()` -> `run(n)`.
3. Use region type strings exactly: `py.RecordSensor`, `py.SPRegion`, `py.TMRegion`, and `py.SDRClassifierRegion` unless a custom region has been registered.
4. Use explicit link endpoint names when debugging: `srcOutput="dataOut"`, `destInput="bottomUpIn"`, `srcOutput="bottomUpOut"`, `destInput="bottomUpIn"`, and sensor-to-classifier `bucketIdxOut`, `actValueOut`, `categoryOut` links.
5. Query outputs with `network.regions["name"].getOutputData("outputName")`; classifier predictions come from `actualValues` and flattened `probabilities` arrays.
## Bundled runtime resources
- [`references/network-workflows.md`](references/network-workflows.md): read this for the complete sensor -> SP -> TM -> classifier construction recipe, link table, output shapes, validation checks, and safe serialization notes.
- [`references/custom-region.md`](references/custom-region.md): read this when the user needs a custom `PyRegion` skeleton, registration steps, `getSpec()` contract, or dynamic output width handling.
- [`references/troubleshooting.md`](references/troubleshooting.md): read this when Network imports, region type strings, link endpoint names, initialization, typed parameters, classifier outputs, or bundle loading/saving fail.
- [`scripts/network_smoke.py`](scripts/network_smoke.py): run this deterministic helper to import `nupic.engine.Network`, construct an empty network by default, optionally inspect built-in region specs, and print a safe next-step pipeline template without requiring source data files.
## Minimal Network API shape
```python
import json
from nupic.engine import Network
network = Network()
network.addRegion("sensor", "py.RecordSensor", "{}")
# Attach a MultiEncoder and FileRecordStream to network.regions["sensor"].getSelf().
network.addRegion("SP", "py.SPRegion", json.dumps(spParams))
network.addRegion("TM", "py.TMRegion", json.dumps(tmParams))
network.addRegion("classifier", "py.SDRClassifierRegion", json.dumps(clParams))
network.link("sensor", "SP", "UniformLink", "", srcOutput="dataOut", destInput="bottomUpIn")
network.link("SP", "TM", "UniformLink", "", srcOutput="bottomUpOut", destInput="bottomUpIn")
network.link("TM", "classifier", "UniformLink", "", srcOutput="bottomUpOut", destInput="bottomUpIn")
network.link("sensor", "classifier", "UniformLink", "", srcOutput="bucketIdxOut", destInput="bucketIdxIn")
network.link("sensor", "classifier", "UniformLink", "", srcOutput="actValueOut", destInput="actValueIn")
network.link("sensor", "classifier", "UniformLink", "", srcOutput="categoryOut", destInput="categoryIn")
network.regions["sensor"].setParameter("predictedField", "consumption")
for name in ("SP", "TM", "classifier"):
network.regions[name].setParameter("learningMode", 1)
network.regions[name].setParameter("inferenceMode", 1)
network.initialize()
network.run(1)
```
Keep generated or copied user examples self-contained. Do not require future agents to open the original repository docs, tests, scripts, examples, notebooks, or local checkout paths.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!