> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nimbusbci.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Nimbus BCI Engine

> Bayesian personalization for frozen EEG encoders — wrap any trunk, adapt online with Personalizer, ship apps on BrainState. Python and Julia SDKs.

*Bayesian personalization for frozen EEG encoders — and classical BCI heads when you already have features.*

Nimbus owns the personalization layer: wrap any frozen trunk that emits `encode(X) → Z`, adapt online with a Bayesian head (`Personalizer`), and ship apps on `BrainState`. Classical CSP / bandpower / Riemann → `NimbusLDA` workflows remain fully supported.

<img src="https://mintcdn.com/nimbus-e9e10bf8/swpeAHmpSqwCXtOt/images/hero.png?fit=max&auto=format&n=swpeAHmpSqwCXtOt&q=85&s=f6aa182ff52fe409c60579afbfa0bcbe" alt="Nimbus BCI Engine documentation" style={{ width: '100%', borderRadius: 12, marginTop: 16, marginBottom: 8 }} width="1584" height="396" data-path="images/hero.png" />

## Start here

<Columns cols={3}>
  <Card title="Personalizer & Middleware" icon="layers" href="/personalizer/overview">
    Encoder contract: `wrap` → `Personalizer` → `BrainState`.
  </Card>

  <Card title="Python SDK" icon="braces" href="/python-sdk/quickstart">
    Local Personalizer workflows with `nimbus-bci`.
  </Card>

  <Card title="Julia SDK" icon="code" href="/julia-sdk/quickstart">
    RxInfer-backed workflows with `NimbusSDK.jl`.
  </Card>
</Columns>

## Why Nimbus

<Columns cols={2}>
  <Card title="Why Bayesian BCI Inference" icon="scale" href="/core-concepts/why-bayesian-bci">
    Compare classical LDA, SVM, and deep learning with Nimbus — including \~8–10× cheaper online head updates vs batch refit.
  </Card>

  <Card title="Probabilistic Outputs" icon="shield" href="/core-concepts/probabilistic-ai">
    Predictions include posterior probabilities and confidence scores.
  </Card>

  <Card title="Real-Time Inference" icon="activity" href="/inference-configuration/streaming-inference">
    Batch and streaming workflows for low-latency BCI systems.
  </Card>

  <Card title="Heads / Models" icon="brain" href="/model-specification">
    Bayesian heads used by Personalizer and standalone classifiers.
  </Card>

  <Card title="Production Guardrails" icon="check" href="/inference-configuration/error-handling">
    Validation, quality gates, diagnostics, and deployment patterns.
  </Card>
</Columns>

## Heads (used by Personalizer)

| Model | SDK | Best For |
| - | - | - |
| `NimbusLDA` | Python + Julia | Fast baseline; default `Personalizer(head="lda")`. |
| `NimbusQDA` | Python + Julia | Overlapping classes and class-specific covariance. |
| `NimbusSoftmax` | Python | Multiclass nonlinear boundaries with optional JAX install. |
| `NimbusProbit` | Julia | Julia-native Bayesian multinomial probit workflows. |
| `NimbusSTS` | Python | Non-stationary sessions and latent-state adaptation. |

## Core Workflow

**Product path (frozen trunk):**

```text theme={null}
EEG → frozen encoder → Personalizer → BrainState → confidence-aware action
```

**Classical path (features already extracted):**

```text theme={null}
EEG → preprocessing (CSP / bandpower / Riemann) → Nimbus head → confidence-aware action
```

Nimbus expects embeddings or preprocessed features — not raw EEG. Start with [Personalizer & Middleware](/personalizer/overview) for the encoder contract, or [Preprocessing Requirements](/inference-configuration/preprocessing-requirements) for classical CSP / bandpower / ERP.

## Documentation map

<Columns cols={2}>
  <Card title="Personalizer & Middleware" icon="layers" href="/personalizer/overview">
    Encoder contract and BrainState app surface.
  </Card>

  <Card title="Installation and quickstarts" icon="rocket" href="/quickstart">
    Choose Python or Julia and run first inference.
  </Card>

  <Card title="Migration to 0.6" icon="arrow-right" href="/python-sdk/migration-0.6">
    Breaking changes when upgrading nimbus-bci.
  </Card>

  <Card title="Heads & Models" icon="brain" href="/model-specification">
    LDA, QDA, Softmax, Probit, STS as Personalizer heads.
  </Card>

  <Card title="Examples" icon="play" href="/examples/basic-examples">
    Compact recipes and higher-level application patterns.
  </Card>
</Columns>

## Common questions

<AccordionGroup>
  <Accordion title="Do I need an API key?" icon="key">
    Python does not require an API key. Julia requires an API key to install and use the commercial core.
  </Accordion>

  <Accordion title="Can Nimbus process raw EEG?" icon="activity">
    No. Nimbus expects embeddings from a frozen encoder (`encode(X) → Z`) or features from preprocessing pipelines such as CSP, bandpower, or ERP extraction.
  </Accordion>

  <Accordion title="Which SDK should I start with?" icon="arrow-right">
    Use Python for Personalizer / BrainState app integration, sklearn/MNE workflows, and local development. Use Julia for RxInfer-backed workflows and Julia-native model tooling.
  </Accordion>
</AccordionGroup>

## Next read

<Columns cols={3}>
  <Card title="Personalizer" icon="layers" href="/personalizer/overview">
    Product wedge overview
  </Card>

  <Card title="Python Quickstart" icon="braces" href="/python-sdk/quickstart">
    First Personalizer in minutes
  </Card>

  <Card title="Julia Quickstart" icon="code" href="/julia-sdk/quickstart">
    Julia SDK first steps
  </Card>
</Columns>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.