Skip to main content

Get Started with NimbusSDK.jl (Julia SDK)

Build your first brain-computer interface application in just a few steps. This guide will take you from setup to running inference on neural data in under 10 minutes.
Choose Your SDK:This page covers the Julia SDK (NimbusSDK.jl). If you’re using Python, see the Python SDK Quickstart instead.
  • 🐍 Python SDK: sklearn-compatible, works with MNE-Python, fully local → Python Quickstart
  • Julia SDK: RxInfer.jl-based, maximum performance, requires API key → Continue below

Prerequisites

Before you begin, make sure you have:
  • Julia 1.9+ installed on your system
  • Basic understanding of EEG data and BCI concepts
  • Preprocessed features (CSP, bandpower, etc.) - see preprocessing requirements
Important: NimbusSDK.jl expects preprocessed features, not raw EEG data. You must apply bandpass filtering, artifact removal, and feature extraction (e.g., CSP) before using the SDK.

Step 1: Get Your API Key

Request API Access

Contact us at hello@nimbusbci.com to request your API key. Include your use case and expected volume.
API keys are typically issued within 24 hours. Include details about your BCI application, expected data volume, and timeline in your request.

Step 2: Install NimbusSDK.jl

NimbusSDK.jl is now available in the public Julia General Registry:
After installing the wrapper, install the proprietary core with your API key:
What changed? NimbusSDK.jl is now a public wrapper package. No more private registry setup! Just Pkg.add("NimbusSDK") and then install the core with your API key.
The core installation is persistent. You only need to run install_core() once per machine. After that, using NimbusSDK will work in any Julia project.

Step 3: Your First BCI Inference

Create a new Julia script and run your first BCI inference:

Required Format for Features

NimbusSDK expects features in a specific format:
  • Dimensions: (n_features × n_samples × n_trials)
  • Feature types: CSP (recommended), bandpower, ERP amplitudes
  • Preprocessing: Must be applied before using SDK
Critical: You must preprocess your EEG data before using NimbusSDK. The SDK does NOT process raw EEG - it requires extracted features. See Preprocessing Guide for details.

Step 4: Training Your Own Model

Train a custom NimbusLDA model on your labeled data:
Feature Normalization is Critical!EEG amplitude varies 50-200% across sessions. Without normalization, accuracy drops 15-30% for cross-session BCI.Always:
  1. Estimate normalization params from training data
  2. Apply same params to test/deployment data
  3. Save params with your model
See Feature Normalization for details.
New in v0.2.0: You can now fine-tune model hyperparameters (dof_offset, mean_prior_precision) to optimize performance for your specific dataset. See the model documentation for detailed tuning guidance.

Step 5: Streaming Inference

For real-time applications, use streaming inference:

Available Models

NimbusSDK includes Bayesian inference models for different BCI scenarios:

Bayesian LDA (NimbusLDA)

API Name: NimbusLDA
Mathematical Model: Pooled Gaussian Classifier (PGC)
  • Shared covariance across classes
  • Fast inference and training
  • Best for well-separated classes
  • Typical training time: 10-30 seconds (50 iterations, 100 trials)

Bayesian QDA (NimbusQDA)

API Name: NimbusQDA
Mathematical Model: Heteroscedastic Gaussian Classifier (HGC)
  • Class-specific covariances
  • More flexible, handles overlapping distributions
  • Better for complex class structures
  • Slightly slower than Bayesian LDA

NimbusProbit (Julia only)

API Name: NimbusProbit
Mathematical Model: Bayesian Multinomial Probit Regression
  • Continuous transition mapping to latent space
  • Most flexible for complex multinomial tasks
  • Works in (K-1) dimensional space
  • Ideal for advanced BCI applications
All models use RxInfer.jl for efficient variational Bayesian inference with reactive message passing.

Next Read

Now that you have NimbusSDK running, explore these advanced features:

Julia SDK Reference

Complete SDK documentation with all functions and types

Feature Normalization

Critical guide for cross-session BCI performance (+15-30% accuracy)

Bayesian LDA (NimbusLDA)

Learn about the Bayesian LDA model in detail

Bayesian QDA (NimbusQDA)

Learn about the Bayesian QDA model in detail

NimbusProbit

Learn about NimbusProbit in detail

Bayesian STS (NimbusSTS)

Adaptive model for non-stationary data (Python SDK only)

Preprocessing Guide

Critical guide on preparing your EEG data

Batch Processing

Process multiple trials efficiently

Streaming Inference

Real-time chunk-by-chunk processing

Common Use Cases

Motor Imagery BCI

Control devices with imagined movements using CSP features

P300 Speller

Communication interfaces using event-related potentials

SSVEP Control

High-speed visual BCI with steady-state responses

Neurofeedback

Real-time brain state monitoring and training

Quickstart FAQ

Yes. Install the wrapper with Pkg.add("NimbusSDK"), then run NimbusSDK.install_core("your-api-key") once per machine.
NimbusSDK.jl expects preprocessed features rather than raw EEG. See Preprocessing Requirements and Feature Normalization.

Troubleshooting

API Key Issues:Data Format Issues:
  • Features must be in shape: (n_features × n_samples × n_trials)
  • Ensure you’ve applied preprocessing (filtering, artifact removal, feature extraction)
  • No NaN or Inf values in data
Model Loading Issues:
  • Check that you have a valid model name
  • Ensure your internet connection is working (for pre-trained models)
  • Verify API key is authenticated
Need assistance? We’re here to help:
  • Email: hello@nimbusbci.com for technical support
  • Documentation: Browse our comprehensive guides
  • Examples: Check out working code samples in the SDK
  • API Documentation: See Julia SDK Reference
When reporting issues, please include:
  • Your Julia version and OS
  • The exact error message
  • A minimal code example that reproduces the issue
  • Your data shape and preprocessing steps

Performance Tips

Optimize for Production:
  • Use batch inference for multiple trials (more efficient than streaming)
  • Implement proper error handling with try-catch blocks
  • Monitor API usage and quotas
  • Cache model information locally after loading
  • Use appropriate confidence thresholds for your application
  • Check preprocessing quality with diagnose_preprocessing()
Congratulations! 🎉 You’ve successfully set up NimbusSDK.jl and run your first brain-computer interface inference. You’re now ready to build powerful BCI applications with sub-20ms latency and production-ready Bayesian inference.