NeuroSkill — Local-First EXG/BCI Neurofeedback Workbench

A local-first desktop app that turns real-time EXG streams into GPU band-power analysis, neural embeddings and session-level BCI research views.

Stars
★ 103
Last updated
3d ago
License
GPL-3.0
Primary language
Rust

At a glance

How it runs
Desktop appCLI
Works with
Portable with changes
Cost
Free, no paid service needed
Setup effort
Medium · a few setup steps
You'll need
Hugging Face CLI (hf)npmRust/Tauri v2 toolchainSvelteKitTauri v2Shell / CLINetwork accessLocal filesystem
Typical use
A neurofeedback researcher who wants live multi-channel band power and session comparisons on a laptop without uploading raw EEG to a cloud service.
Not a fit if
  • Teams needing an FDA/CE-approved medical device for diagnosis or treatment
  • Users unwilling to set up the Hugging Face CLI, Rust/Tauri and npm toolchains
  • Users who want a pure cloud SaaS rather than local model weights and EXG devices

What does this agent do, and when should you use it?

NeuroSkill is an open-source, local-first desktop neurofeedback and BCI application built with Tauri v2 (Rust) and SvelteKit, explicitly scoped to research use and not a medical device. It ingests real-time EXG streams from supported headsets or any compatible LSL source, as well as remote rlsl-iroh streams, and lists devices from BrainBit, OpenBCI, Emotiv, InteraXon Muse, g.tec, Neurosity, NeuroSky, Ōura and more. On top of the live signal it performs GPU band-power analysis and neural embeddings, then supports session comparison, sleep staging, UMAP visualization, labeling, similarity search and screenshot-based search. A catalog defined in src-tauri/exg_catalog.json drives loading of EEG/EXG foundation models such as ZUNA, LUNA, REVE, LaBraM, EEGPT, CBraMod and SleepFM from Hugging Face. The app also embeds a local LLM and TTS and exposes a WebSocket/HTTP API, and ships as macOS dmg, Windows exe and Linux AppImage releases or via a Homebrew cask. Because everything runs in the desktop process, raw physiological data does not have to leave the machine.

At runtime NeuroSkill reads live multi-channel EXG data from a supported device or from any LSL source, including remote rlsl-iroh streaming, and renders it in a real-time desktop view. It then runs GPU band-power analysis and neural embedding computation on captured signals. Recordings become sessions that can be compared against each other, staged for sleep, projected with UMAP, labeled, and retrieved through similarity search or screenshot-based search. The model layer is declared in src-tauri/exg_catalog.json and pulls pretrained weights from Hugging Face (ZUNA, LUNA Base/Large/Huge, REVE Base/Large, OpenTSLM, SensorLM, SleepFM, SleepLM, OSF Base, SignalJEPA, LaBraM, EEGPT, TRIBE v2, NeuroRVQ, CBraMod, ST-EEGFormer Small/Base/Large) for downstream inference. A local LLM plus TTS integration and a WebSocket/HTTP API make the app programmable from outside. Accompanying docs cover architecture, device integration, metric formulas, hooks, LLM internals, LSL integration, the API surface, and platform build steps.

  1. A neurofeedback researcher who wants live multi-channel band power and session comparisons on a laptop without uploading raw EEG to a cloud service.
  2. An ML engineer benchmarking several EEG foundation models (LaBraM, EEGPT, CBraMod, LUNA) who needs one acquisition pipeline that feeds loading, embedding and visualization.
  3. A sleep or cognition lab using SleepFM/SleepLM-style models with overnight recordings for sleep staging and UMAP inspection.
  4. A hardware prototyper working with Muse, OpenBCI Cyton, Emotiv or g.tec Unicorn who needs a desktop app with broad device support and a WebSocket/HTTP API.
  5. A team wiring a local LLM and TTS into a physiological-signal workflow through the app's hook and local-model pipeline.
  6. An instructor or demo presenter who needs a one-command install on macOS, Windows or Linux and a live BCI walkthrough.

How do you install or deploy this agent?

Prebuilt releases are published for each desktop platform; download and launch.

# macOS
https://github.com/NeuroSkill-com/skill/releases/latest/download/NeuroSkill.dmg
# Windows
https://github.com/NeuroSkill-com/skill/releases/latest/download/NeuroSkill.exe
# Linux
https://github.com/NeuroSkill-com/skill/releases/latest/download/NeuroSkill.AppImage

On macOS you can also install via Homebrew:

brew tap NeuroSkill-com/skill && brew install --cask neuroskill

Building from source starts by installing the Hugging Face CLI and downloading a model (ZUNA shown):

curl -LsSf https://hf.co/cli/install.sh | bash
hf download Zyphra/ZUNA

On Windows the Hugging Face CLI install command is:

powershell -ExecutionPolicy ByPass -c "irm https://hf.co/install.ps1 | iex"

Then run the repository setup script and start the dev app:

npm run setup -- --yes
npm run tauri dev

And build a production bundle:

npm run tauri build

How do you use this agent?

Launch the desktop app, pick the EXG device or LSL stream you want (BrainFlow, MATLAB and pylsl sources all qualify via LSL), and start the real-time stream view. Save the recording as a session, then use the built-in tools to compare sessions, run sleep staging, generate UMAP visualizations, apply labels, and run similarity or screenshot-based search over the data. To run a specific foundation model, make sure its weights were fetched with hf download first; the authoritative list lives in src-tauri/exg_catalog.json. External scripts talk to the app through the WebSocket/HTTP API documented in docs/API.md, while local LLM and TTS wiring is covered in docs/LLM.md and extension points in docs/HOOKS.md. The device and model lists in the README are auto-generated and should be refreshed with npm run sync:readme:supported after changing support.

What are this agent's strengths and limitations?

Pros
  • Local-first by design: acquisition, model inference and storage happen on the desktop, which suits researchers handling sensitive raw physiological data.
  • Broad hardware coverage: the README lists BrainBit, OpenBCI, Emotiv, Muse, g.tec, Neurosity, NeuroSky, Ōura and others, plus any compatible LSL source.
  • Auditable model catalog: src-tauri/exg_catalog.json enumerates 20 EEG/EXG foundation checkpoints across ZUNA, LUNA, REVE, LaBraM, EEGPT, CBraMod, SleepFM and more.
  • Programmable surface: a WebSocket/HTTP API, local LLM and TTS integration, and a documented hooks mechanism make it embeddable in existing pipelines.
  • Complete three-platform distribution: macOS dmg, Windows exe, Linux AppImage and a Homebrew cask keep install friction low.
Limitations
  • Explicitly not a medical device: no FDA/CE approval means it cannot be used for diagnosis or treatment, which blocks clinical adoption.
  • You must supply your own EXG hardware and Hugging Face weights, and source installs require the Hugging Face CLI, npm and the Tauri/Rust toolchain.
  • GPL-3.0-only licensing constrains closed-source redistribution or embedding in commercial products.
  • The repository documents no server or container deployment path, so it cannot run as a headless service on a cluster.
  • The README does not state which LLM/TTS models are used, their hardware acceleration requirements or quantization options, so inference performance cannot be estimated from the docs.

How does this agent compare with similar options?

Key facts side by side with the most closely related agents.

Agent Source review Form / cost Stars Updated Language Full support on
NeuroSkill — Local-First EXG/BCI Neurofeedback Workbench This agent 47 · Major gaps Desktop appFree ★ 103 3d ago Rust —
Principia 66 · Some gaps CLIFree + model costs ★ 948 17d ago Rich Text Format —
Open Science Workbench 52 · Major gaps Desktop appFree + model costs ★ 5.4k today TypeScript Codex · Claude Code
ChatLab — Chat History Analyzer 42 · Major gaps Desktop appFree + model costs ★ 7.5k 4d ago TypeScript —

How does FollowAgents rate this agent?

FollowAgents source review · FARS-2.1
Major gaps
47/ 100 5-point scale 2.4 / 5
Trust 10/29
Reliability 6/14
Adaptability 10/18
Convention 11/18
Effectiveness 7/13
Verifiability 3/8
Why each dimension lost points
Trust10 / 29 · 1.7/5

Evidence shows a local-first Tauri desktop BCI app, but repository-level permission boundaries are not stated in the visible files: no capability/permission manifest and no explicit declaration of microphone/camera/Bluetooth/filesystem/network access, so least_privilege scores 1 (present but thin). user_confirmation scores 0: no confirmation mechanism before destructive actions is described anywhere in the visible files. data_flow_transparency scores 1: the README mentions local LLM, LSL, remote rlsl-iroh streaming and a WebSocket/HTTP API, but does not state where data flows or whether it leaves the device. sensitive_data_handling scores 1: the project processes EEG/EXG and Oura physiological data, which is sensitive, yet no privacy policy, encryption or retention statement is visible. dependency_security scores 2: Cargo.toml explicitly patches GHSA-wrw7-89jp-8q8g (glib) and GHSA-2qph-qpvm-2qf7 (rand/phf_generator) and documents the cubek-matmul, btleplug and muda patches, which is verifiable dependency-security work; however the patches point at personal forks (eugenehp/*), widening the supply-chain trust surface, so full marks are withheld. external_effects scores 1: auto-updater plugin, Discord webhook and remote streaming create external side effects, but their boundaries are undocumented. rollback scores 1: an updater and version numbers exist, but no rollback/downgrade procedure is described. source_attribution scores 1: the README lists many third-party models and device vendors but gives no per-model licensing or attribution detail.

Reliability6 / 14 · 2.1/5

self_consistency scores 2: package.json version 0.0.129, README badges, CI workflows and the Cargo workspace member list are mutually consistent with no visible contradiction. dependency_availability scores 1: many dependencies are git-branch patches (eugenehp/cubek, eugenehp/btleplug, eugenehp/gtk-rs-core, eidola-ai/burn-mlx) plus local patches/ directories; if those branches are deleted or force-pushed the build is not reproducible, and Hugging Face model downloads and prebuilt llama libraries add external service dependencies. failure_messages scores 1: CI scripts contain some error messages and retry logic, but runtime failure messaging is not visible in the provided files.

Adaptability10 / 18 · 2.8/5

audience_and_scenarios scores 2: the README clearly targets EXG/BCI researchers and lists devices, models and a documentation index. capability_boundaries scores 2: it prominently states 'Research use only — not a medical device' and that it must not be used for diagnosis or treatment, which is a clear boundary statement. trigger_precision scores 1: for a desktop app with CLI/daemon, the conditions under which acquisition starts, the LLM is invoked, or data is sent out are undefined in the visible files. environment_fit scores 2: separate macOS/Windows/Linux build and packaging scripts, a Homebrew cask and platform docs give real environment support.

Convention11 / 18 · 3.1/5

information_architecture scores 2: the README is well structured and docs/ splits architecture, devices, metrics, API and development. install_notes scores 2: Homebrew, download links, npm run setup, hf download and tauri dev/build steps are given. naming_stability scores 2: crates are uniformly named skill-*, the package is neuroskill, and versioning is centralized. examples_and_faq scores 1: quickstart commands exist, but there are no usage examples, FAQ or troubleshooting guidance. known_limitations scores 2: it explicitly states it is not a medical device and not FDA/CE approved, and documents several upstream bugs and patches. license scores 3: the LICENSE file is the full GPL-3.0 text, package.json declares GPL-3.0-only, and the README and badge agree — three mutually corroborating sources. versioning_changelog scores 2: a CHANGELOG.md is referenced with fragment validation scripts and a CI gate, but no actual change history is visible. maintenance_responsibility scores 1: the publisher is unverified and no maintainer, governance or security contact is stated.

Effectiveness7 / 13 · 2.7/5

output_usability scores 2: the product output (real-time visualization, analysis, embeddings, search, API) is clearly useful for research and is supported by screenshots and docs. marginal_value scores 2: broad device and EXG foundation-model support plus local LLM/TTS, LSL and remote streaming differentiate it from generic tooling. cost_benefit scores 1: build cost is high (a Rust workspace of dozens of crates, Vulkan/ONNX/llama.cpp, model downloads, multi-platform signing and notarization) while the visible files give no performance or resource quantification, so the trade-off cannot be assessed.

Verifiability3 / 8 · 1.9/5

claim_traceability scores 1: the device and model lists are marked auto-generated with sync scripts and a canonical source (src-tauri/exg_catalog.json), so some claims are traceable, but functional and security claims lack supporting evidence. cross_source_corroboration scores 1: license and version can be cross-checked across README/package.json/LICENSE, but security and privacy claims have no second source. fact_inference_separation scores 1: the README is mostly feature assertion and does not separate verified facts from design intent or flag unimplemented/untested capabilities.

Risks and how to mitigate them
  • Not found in source: confirmation before actingTurn on (or add) a confirmation step before it acts, and try it in a sandbox or test environment before real data.
  • The repository handles sensitive data such as EEG/EXG and Oura physiological signals, yet the visible files provide no privacy policy, retention or encryption statement; assess compliance before collecting real subject data.
  • Cargo.toml patches several crates via personal fork branches (eugenehp/cubek, eugenehp/btleplug, eugenehp/gtk-rs-core, eidola-ai/burn-mlx); deletion or force-push of those branches breaks reproducibility and widens the supply-chain trust surface.
  • The README explicitly states this is not a medical device and is not FDA/CE approved and must not be used for diagnosis or treatment; no clinical or health decision should rely on its output.
  • Publisher identity is unverified and no maintainer, governance or security-disclosure channel is stated, leaving update and long-term maintenance responsibility unclear.
  • The visible files do not describe the data flow or boundaries of the auto-updater, remote rlsl-iroh streaming, WebSocket/HTTP API or Discord webhook; confirm the network exposure surface before deployment.
Evidence confidence: Low Reviewed Oct 02, 2026 Reviewed revision bfe84a981acf
See the full review method →

FAQ

Does it cost anything?
No. NeuroSkill is free and open source under GPL-3.0-only, with release downloads and a Homebrew cask. Your real costs are EXG hardware, local compute, and the network/storage needed to pull model weights from Hugging Face.
Can I use it in a clinical setting?
No. The README states plainly that it is for research use only and is not a medical device, with no FDA/CE approval and no permitted diagnostic or treatment use.
Will my existing EEG headset work?
Check the supported device list first (BrainBit, OpenBCI Cyton/Ganglion, Emotiv, Muse, g.tec Unicorn, Neurosity Crown, NeuroSky, Ōura and others). If your device is not listed, it can still be used as long as it exposes a compatible LSL stream.
Are the foundation model weights downloaded automatically?
No. The quickstart asks you to install the Hugging Face CLI and run hf download manually (hf download Zyphra/ZUNA is the example). The selectable models are listed in src-tauri/exg_catalog.json, which includes ZUNA, LUNA, REVE, OpenTSLM, SensorLM, SleepFM, SleepLM, OSF, SignalJEPA, LaBraM, EEGPT, TRIBE v2, NeuroRVQ, CBraMod and ST-EEGFormer entries.
Can I run it as a background service on a server?
The source documents only the Tauri desktop build (npm run tauri build) and desktop release artifacts; there is no Docker or headless deployment guidance. For programmatic access, connect to the app's WebSocket/HTTP API as described in docs/API.md.
View on GitHub ↗ Install ↓

Related agents