Developer Guide Overview
NeoMind is a modular ecosystem split into four independent repositories organized by development goal. This page helps you pick the right repo to start from and points to the deeper doc for each path.
The NeoMind codebase is purpose-built for AI coding tools like Claude Code β the project ships with a CLAUDE.md context file, a 33-section frontend design spec, and 16 reference extension implementations. Whether you're building extensions, components, or contributing to the main project, we recommend starting with AI-assisted development. See the AI-Assisted Development Guide.
First Question: What Are You Building?β
What do you want to do?
β
ββ Add a new device type / sensor metric to NeoMind
β β Repo: camthink-ai/NeoMind-DeviceTypes (JS / JSON)
β β See: Β§ Device Type Development below
β
ββ Add a new capability (AI model / vision algo / 3rd-party integration)
β β Repo: camthink-ai/NeoMind-Extensions (Rust, built on the Extension SDK)
β β See: Extension Development (./7-extension-development.md) and Extension SDK (./3-extension-sdk.md)
β
ββ Build a dashboard widget (chart / gauge / custom visualization)
β β Repo: camthink-ai/NeoMind-Dashboard-Components (JS / React)
β β See: Β§ Dashboard Component Development below
β
ββ Contribute to the main project / fix a bug / wire up a new backend API
β Repo: camthink-ai/NeoMind (Rust + React)
β See: Product Architecture (./2-architecture.md) and REST API (./4-rest-api.md)
Repository Mapβ
| Repo | Language | Purpose | Artifact |
|---|---|---|---|
| NeoMind | Rust + TypeScript | Core platform (backend + frontend + Tauri desktop) | neomind server, neomind-extension-runner, web frontend |
| NeoMind-Extensions | Rust | Official extension marketplace (weather / YOLO / OCR / face / streaming / bridges) | .nep extension packages |
| NeoMind-DeviceTypes | JSON (+ metadata) | Device type definitions (metrics / commands / defaults) | JSON type files |
| NeoMind-Dashboard-Components | TypeScript / React | Dashboard widget marketplace | JS component packages |
Tech Stack at a Glanceβ
Main project (NeoMind):
- Backend: Rust (edition 2021, toolchain 1.92.0), Tokio async runtime, Axum web framework, redb embedded storage, serde
- Frontend: React 18 + TypeScript + Vite + Zustand + Radix UI + Tailwind CSS
- Desktop: Tauri 2.x
- Protocols: REST + WebSocket + SSE + MQTT 3.1.1
Extensions: Rust, depend on the neomind-extension-sdk crate (latest v0.6.3), export via the neomind_export! FFI macro, run in an isolated process provided by neomind-extension-runner.
Device types: declarative JSON, no runtime code β just describes the metrics, commands, and defaults. Loaded by NeoMind on the fly.
Dashboard components: React components implementing the Dashboard Component Registry protocol; dynamically injected into the dashboard canvas.
Device Type Developmentβ
Repo: camthink-ai/NeoMind-DeviceTypes
A device type is a JSON file declaring:
metrics: what the device produces (name, display name, data type, unit)commands: what can be sent down (name, parameter schema)defaults: default config (icon, polling interval, etc.)
Typical scenario: you integrated a new sensor and want every user to use it out of the box β open a PR adding the type definition; once merged, everyone's neomind device types list shows it.
Example (simplified):
{
"name": "temp_humidity_sensor",
"display_name": "Temp/Humidity Sensor",
"metrics": [
{"name": "temperature", "display_name": "Temperature", "data_type": "Float", "unit": "Β°C"},
{"name": "humidity", "display_name": "Humidity", "data_type": "Float", "unit": "%"}
],
"commands": []
}
See the repo README for the full schema and submission conventions.
Extension Developmentβ
Repo: camthink-ai/NeoMind-Extensions (community extensions PR here too)
Prerequisite: read Extension SDK to understand the neomind_export! macro, the capability system, ML model lifecycle, and cross-platform packaging.
Flow summary (details in Extension Development):
- Scaffold a crate from the SDK template
- Implement the
Extensiontrait and export withneomind_export! - Declare capabilities (
network,filesystem,ml-model, β¦) - (Optional) bundle ML models with lazy-load lifecycle
cargo build --releaseand pack into a.nep- Upload via the Extensions page in NeoMind, or submit to the Extensions repo
Dashboard Component Developmentβ
Repo: camthink-ai/NeoMind-Dashboard-Components
A dashboard component is a React component implementing the Dashboard Component Registry protocol:
- Declare
componentType(unique id), config schema (what the user fills in the UI) - On render you receive
dataSource(DataSourceId),config(user config),data(live data) - Use ECharts / Recharts / hand-rolled SVG β your choice
Typical scenario: the built-in library doesn't have the visualization you need (heatmap, map, 3D gauge).
Flow: scaffold from the repo template β develop locally with Vite β publish to the marketplace β install from NeoMind.
Main Project Developmentβ
Repo: camthink-ai/NeoMind
Prerequisite: read Product Architecture for crate dependencies, process model, event bus, extension ABI, and storage.
Typical work:
- Bug fix / logic change β find the crate (devices in
neomind-devices, rules inneomind-rules, etc.) - Add an HTTP API β add a handler in
neomind-api; see REST API Reference - Add an LLM backend β add an impl under
neomind-agent/src/llm_backends/ - Frontend change β work under
web/src/(always readweb/DESIGN_SPEC.mdfirst)
Build & Run:
# Backend (port 9375)
cargo run -p neomind-cli -- serve
# Frontend dev server (port 5173)
cd web && npm install && npm run dev
# Desktop app
cd web && npm run tauri:dev
Last updated: 2026-06-16