Skip to main content
Production-ready Bayesian BCI inference with NimbusLDA and NimbusQDA, plus NimbusSoftmax / NimbusSTS (Python) and NimbusProbit (Julia) Nimbus provides fast, probabilistic inference for Brain-Computer Interface applications in Python and Julia. The SDKs deliver sub-30ms inference latency with full uncertainty quantification through Bayesian LDA, Bayesian QDA, Bayesian Multinomial, and Bayesian STS implementations. Nimbus BCI Engine documentation Choose your SDK:

Python SDK (nimbus-bci)

sklearn-compatible classifiers with MNE-Python integration

Julia SDK (NimbusSDK.jl)

Built on RxInfer.jl for maximum performance

Start Here

Python Quickstart

Start with local sklearn-compatible workflows in nimbus-bci.

Julia Quickstart

Start with NimbusSDK.jl and RxInfer-powered inference.

Model Selection

Choose the right Bayesian model for your BCI task.

Why Nimbus BCI

Brain-Computer Interfaces face unique challenges: noisy neural signals, inherent uncertainty, real-time requirements, and the need for explainability in medical applications. Current BCI Challenges:
  • High Latency: Standard processing takes 200ms+ for trial classification
  • No Uncertainty Quantification: Deterministic outputs without confidence measures
  • Limited Adaptability: Cannot handle changing brain states or signal quality
  • Black Box Models: Deep learning lacks explainability for FDA approval
Nimbus Solution:
  • Fast Inference: 10-20ms per trial with Bayesian models
  • Uncertainty Quantification: Full posterior distributions, not just point estimates
  • Training & Calibration: Subject-specific personalization in minutes
  • Explainable: White-box probabilistic models for medical compliance
  • Production-Ready: Batch and streaming modes, quality assessment, performance tracking

Python SDK Quickstart

Get started with nimbus-bci in Python

Julia SDK Quickstart

Get started with NimbusSDK.jl in Julia

Core Features

Fast Bayesian Inference

NimbusLDA and NimbusQDA models with 10-20ms inference latency using RxInfer.jl reactive message passing

Training & Calibration

Train custom models on your data or calibrate pre-trained models with 10-20 trials per subject

Real-time Streaming

Process EEG chunks as they arrive with chunk-by-chunk inference and weighted aggregation

Uncertainty Quantification

Full posterior distributions with confidence scores for quality assessment and rejection

Implemented Models

Nimbus provides production-ready Bayesian models. Some are available in both SDKs, and some are SDK-specific:

Bayesian LDA (NimbusLDA)

Bayesian Linear Discriminant Analysis with shared covariance. Fastest (10-15ms), ideal for well-separated classes like motor imagery. Python: NimbusLDA, Julia: NimbusLDA.

Bayesian QDA (NimbusQDA)

Bayesian Quadratic Discriminant Analysis with class-specific covariances. More flexible (15-25ms), better for overlapping distributions like P300. Python: NimbusQDA, Julia: NimbusQDA.

Bayesian Multinomial (NimbusSoftmax / NimbusProbit)

Non-Gaussian multinomial classifier family. Python: NimbusSoftmax. Julia: NimbusProbit.

Bayesian STS (NimbusSTS)

State-space model with EKF-style inference for drift/non-stationarity and online learning. Python: NimbusSTS.

BCI Paradigms Supported

Motor Imagery

2-4 class classification
  • Left/right hand
  • Hands/feet/tongue
  • 70-90% accuracy
  • NimbusLDA recommended

P300

Binary classification
  • Target/non-target
  • Speller applications
  • 80-95% accuracy
  • NimbusQDA recommended

SSVEP

Multi-class frequency
  • 2-6 target frequencies
  • High accuracy (85-98%)
  • Works with both models

Quick Example

from nimbus_bci import NimbusLDA
import numpy as np

# 1. Create and fit classifier
clf = NimbusLDA()
clf.fit(X_train, y_train)

# 2. Predict with uncertainty
predictions = clf.predict(X_test)
probabilities = clf.predict_proba(X_test)

# 3. Works with sklearn pipelines
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler

pipe = make_pipeline(StandardScaler(), NimbusLDA())
pipe.fit(X_train, y_train)

# 4. Online learning
clf.partial_fit(X_new, y_new)

Use Cases

Assistive Technologies

Wheelchair control, prosthetic limbs, communication devices with explainable, FDA-ready probabilistic models

Research Platforms

Academic research with training capabilities, subject-specific calibration, and comprehensive performance metrics

Neurofeedback

Real-time brain state monitoring with streaming inference and confidence-based quality control

Gaming & Wellness

Low-latency brain control for immersive experiences with adaptive difficulty based on confidence

SDK Architecture

EEG Hardware → Preprocessing → Nimbus SDK → Application
   (LSL/BrainFlow)  (MNE/EEGLAB)  (Python/Julia)  (Your Code)
Key Design:
  • Local Inference: All processing on your machine (Python SDK is fully local)
  • Privacy: Your EEG data never leaves your computer
  • Speed: No network latency, consistent <20ms performance
  • Offline Capable: Python SDK works completely offline
Julia SDK API Role:
  • Authentication and licensing
  • Pre-trained model distribution
  • Optional analytics logging

Getting Started

1

Install Python SDK

pip install nimbus-bci
2

Preprocess EEG

Use MNE-Python to extract features (CSP, bandpower, ERP)
3

Train & Predict

Use sklearn-compatible API to train models and make predictions
4

Deploy

Integrate with sklearn pipelines, streaming inference, or real-time applications

Documentation

Python SDK

sklearn-compatible Bayesian classifiers

Julia SDK

RxInfer.jl-based inference engine

Model Training

Train custom models on your data

Preprocessing Guide

Required EEG preprocessing steps

Code Examples

Working Python and Julia examples

API Reference

Authentication and model registry

Next Read

Python SDK

Understand local Python workflows and integration patterns.

Julia SDK

Explore Julia API workflows and model operations.

Cloud API

Review authentication, licensing, and endpoint architecture.

Common Questions

Use the Python SDK Quickstart if you want sklearn-compatible workflows, MNE integration, and fully local development with pip.Use the Julia SDK Quickstart if you want RxInfer.jl-native performance, model registry access, and Julia-first pipelines.
Start with Bayesian LDA for most motor-imagery pipelines and fast baseline performance.Move to Bayesian QDA for overlapping class distributions (for example, P300), and use Bayesian STS for non-stationary sessions that drift over time.
Nimbus expects preprocessed features rather than raw EEG. See Preprocessing Requirements and Feature Normalization for the recommended pipeline.

Performance

MetricNimbusLDANimbusQDANimbusSoftmax (Py)NimbusSTS (Py)
Inference Latency10-15ms15-25ms15-25ms20-30ms
Training Time10-30s15-40s15-40s15-40s
Calibration Time5-15s8-20s8-20s8-20s
Memory UsageLowModerateModerateModerate
Accuracy70-90% (MI)80-95% (P300)70-85% (Complex)75-90% (Adaptive)
All measurements on standard CPU (no GPU required).

Technology Stack

Python SDK:
  • Core: Python 3.10+, NumPy, JAX, NumPyro
  • Integration: scikit-learn pipelines, MNE-Python
  • Models: NimbusLDA, NimbusQDA, NimbusSoftmax, NimbusSTS
Julia SDK:
  • Core: Julia 1.9+
  • Inference Engine: RxInfer.jl - Reactive message passing
  • Models: NimbusLDA, NimbusQDA, NimbusProbit
Common:
  • Preprocessing: MNE-Python, EEGLAB, BrainFlow
  • API: TypeScript/Vercel serverless (Julia SDK authentication)

What’s Included

Python SDK (nimbus-bci): ✅ sklearn-compatible classifiers: NimbusLDA, NimbusQDA, NimbusSoftmax, NimbusSTS ✅ MNE-Python integration for EEG preprocessing ✅ Streaming inference for real-time BCI ✅ Online learning with partial_fit() ✅ Comprehensive metrics and diagnostics Julia SDK (NimbusSDK.jl): ✅ RxInfer.jl-based models: NimbusLDA, NimbusQDA, NimbusProbit ✅ Pre-trained model distribution ✅ Batch and streaming inference ✅ Training and calibration ✅ Quality assessment and ITR calculation

Support

Email Support

hello@nimbusbci.com - Technical support and inquiries

Book a Demo

See Nimbus in action with live demonstration

API Status

Check API availability and version

GitHub

NimbusSDK.jl source code, issues, and examples

License

Python SDK (nimbus-bci): Proprietary license with free evaluation and academic tiers. See Python SDK Installation for details. Julia SDK (NimbusSDK.jl): Commercial software with tiered licensing:
  • Free: 10K monthly inferences, basic models
  • Research: 50K monthly inferences, all features
  • Commercial: 500K monthly inferences, priority support
  • Enterprise: Unlimited, custom models, on-premise deployment
Contact hello@nimbusbci.com for licensing information.
Built with ❤️ for the neurotechnology community Nimbus BCI Engine - Bringing Bayesian inference to Brain-Computer Interfaces