Get Started with Nimbus BCI
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.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: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, simply 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 RxLDA model on your labeled data:Step 5: Streaming Inference
For real-time applications, use streaming inference:Available Models
NimbusSDK includes two Bayesian inference models:Bayesian LDA (RxLDA)
API Name:RxLDAModelMathematical 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 GMM (RxGMM)
API Name:RxGMMModelMathematical Model: Heteroscedastic Gaussian Classifier (HGC)
- Class-specific covariances
- More flexible, handles overlapping distributions
- Better for complex class structures
- Slightly slower than Bayesian LDA
Both models use RxInfer.jl for efficient variational Bayesian inference with reactive message passing.
Next Steps
Now that you have NimbusSDK running, explore these advanced features:Julia SDK Reference
Complete SDK documentation with all functions and types
Bayesian LDA (RxLDA)
Learn about the Bayesian LDA model in detail
Bayesian GMM (RxGMM)
Learn about the Bayesian GMM model in detail
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
Troubleshooting
Common Issues
Common Issues
API Key Issues:
- Ensure your API key is set correctly
- Contact hello@nimbusbci.com if your key isn’t working
- 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
- Check that you have a valid model name
- Ensure your internet connection is working (for pre-trained models)
- Verify API key is authenticated
Getting Help
Getting Help
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
- 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()