neuromod
Biologically grounded spiking neural network (SNN) primitives in Rust: a topology-neutral SpikingNetwork engine, generic neuromodulators, STDP building blocks, and standalone neuron models.
neuromod is a reusable core library: topology-neutral at initialization, dynamically sizable at runtime, and strict about input shape validation. Dual-licensed MIT OR Apache-2.0.
Highlights
- Dynamic network sizing with
SpikingNetwork::with_dimensions(...) - Backward-compatible default constructor:
SpikingNetwork::new() - Strict step contract:
Result<Vec<usize>, StepError> - Neutral initialization (blank synaptic weights; no hardcoded domain topology)
- Generic neuromodulators: dopamine, serotonin, acetylcholine, norepinephrine
GenericRewardtrait for domain-specific reward shaping in downstream crates- Classical Hebbian STDP utilities and reward-modulated STDP types (
EligibilityTrace,RmStdpConfig)
Engine (SpikingNetwork)
The network engine integrates two neuron banks only:
- LIF (
LifNeuron) — primary bank sized bynum_lif - Izhikevich (
IzhikevichNeuron) — secondary bank sized bynum_izh
Default construction: 16 LIF, 5 Izhikevich, 16 input channels.
Standalone neuron models
These types ship in the crate for research and composition, but are not wired as alternate banks inside SpikingNetwork:
- Lapicque (
LapicqueNeuron) - GIF — Generalized Integrate-and-Fire (
GifNeuron) - FitzHugh–Nagumo (
FitzHughNagumoNeuron) - Hodgkin–Huxley (
HodgkinHuxleyNeuron)
Use them directly; use HebbianIzhikevichNetwork for a small classical-STDP Izhikevich helper separate from SpikingNetwork.
Requirements
| MSRV | Rust 1.97.1 (rust-version in Cargo.toml) |
| Edition | 2024 |
| Pin | rust-toolchain.toml (channel 1.97.1) |
| CI platforms | Linux, macOS, and Windows (GitHub Actions matrix: ubuntu-latest, macos-latest, windows-latest) |
CI installs the same toolchain on each OS. Keep Cargo.toml rust-version, rust-toolchain.toml, and the version string in .github/workflows/ci.yml identical (the CI job fails if they drift).
Installation
[]
= "0.5.2"
Links: crates.io · docs.rs · repository
Quick Start
use ;
Dynamic Dimensions
use ;
Step Errors (Shape Validation)
step validates that stimuli.len() == num_channels and returns an error on mismatch.
use ;
Neuromodulators
NeuroModulators supports direct control, signal-derived initialization via SignalProfile, and generic reward shaping.
use ;
For legacy hardware-calibrated signal mapping, use SignalProfile::hardware_calibrated().
Included Components
- Engine:
SpikingNetwork,StepError(LIF + Izhikevich banks) - Neuromodulation:
NeuroModulators,SignalProfile,Observation,GenericReward,UnitReward,apply_neuromodulation - Engine neuron types:
LifNeuron,IzhikevichNeuron - Standalone neuron types:
GifNeuron,LapicqueNeuron,FitzHughNagumoNeuron,HodgkinHuxleyNeuron - Learning/plasticity:
- Classical:
apply_classical_stdp,StdpParams,HebbianIzhikevichNetwork - Reward-modulated building blocks:
EligibilityTrace,RmStdpConfig
- Classical:
Architecture & Boundaries
neuromod is the core library layer for neuron dynamics, generic neuromodulation, and foundational plasticity primitives.
See the full planning documents:
- Org Modularization Standards — workstream index (#35–#43), cross-cutting git/build/beads standards, and audit commands.
- neuromod Boundary Matrix — runtime/deployment role, owns/does-not-own, allowed/forbidden dependencies vs. limbic-critic, brainstem-daemon, axon-encoder, synaptic-mesh, silicon-bridge, Spikenaut-Hardware, plasticity-lab, etc. (LIM-9).
- ADR 001: Shared traits live in neuromod — why traits are hosted here.
Examples
Run included examples:
Development
# Coverage (matches CI; see codecov.yml)
# HTML report: cargo llvm-cov --all-features --html
# Full CI-like validation
Observability
neuromod publishes test coverage to Codecov. Error monitoring belongs in application binaries (depend on the sentry crate there), not in this library.
Codecov
- Configuration:
codecov.yml - Workflow:
.github/workflows/coverage.yml - Dashboard: codecov.io/gh/Limen-Neural/neuromod
The badge uses Codecov’s graph token (from Configuration → Badges & Graphs).
Uploads need the repository secret CODECOV_TOKEN (tokenless uploads return
HTTP 400 for this org). The coverage workflow passes that token and sets
fail_ci_if_error: false, so a missing/stale token does not fail CI—only the
badge may stay unknown until the secret is correct. After a successful upload on
main, the badge shows a coverage %.
Local coverage (also listed under Development):
# HTML report: cargo llvm-cov --all-features --html
- Open
target/llvm-cov/html/index.htmlafter running the HTML report locally. - CI runs the
coverage.ymlworkflow on every PR and push tomain.
License
This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE-2.0 or [http://www.apache.org/licenses/LICENSE-2.0])
- MIT license (LICENSE-MIT or [http://opensource.org/licenses/MIT])
at your option.
CI & Automation
This repository uses a comprehensive CI setup for speed, quality, security, and observability:
- Core CI (
.github/workflows/ci.yml): matrix over Linux / macOS / Windows (ubuntu-latest,macos-latest,windows-latest). On every OS: MSRV toolchain,clippy, and build. Whendorny/paths-filterdetects rust-relevant path changes (src/,tests/,examples/,benches/,Cargo.toml/Cargo.lock): tests viacargo-nexteston every OS, and feature-matrix testing (cargo-hack) on Linux only. Always on Linux:fmtand domain-agnostic docs check. UsesSwatinem/rust-cachefor faster feedback. - Qodana (
.github/workflows/qodana_code_quality.yml): JetBrains code-quality scans on every PR/push tomainandreleases/*; results are published to Qodana Cloud. - Codecov (
.github/workflows/coverage.yml):cargo-llvm-cov+ Test Analytics (stable JUnit via pinned nextest). See Observability for local usage and report links. - reviewdog (
.github/workflows/reviewdog.yml): Inline PR comments for clippy and rustfmt. - Security scanning:
- CodeQL (
.github/workflows/codeql.yml) rustsec/audit-check+ Trivy (.github/workflows/audit.yml)
- CodeQL (
- Dependencies: Dependabot (
.github/dependabot.yml) for Cargo, GitHub Actions, Docker. - Docker (
.github/workflows/docker.yml,Dockerfile): Reproducible builds. Local usage:# Runtime image (example binaries only — no cargo toolchain) # Run tests inside the builder stage (has Rust + source)
Links
- Crates.io: https://crates.io/crates/neuromod
- Docs.rs: https://docs.rs/neuromod
- Repository: https://github.com/Limen-Neural/neuromod