Recommended Default
If the device is likely to be useful to the wider Elata SDK audience, put it upstream in@elata-biosciences/eeg-web-ble.
That keeps transport behavior centralized and avoids parallel adapters across
multiple apps.
Choose By Outcome
| Path | Best when | Why |
|---|---|---|
Upstream device module in eeg-web-ble | The device is broadly useful and works through browser BLE | Best default for public SDK support |
Separate package under packages/ | You need a vendor SDK, a license gate, or a localhost/native bridge | Keeps heavier integrations isolated |
| App-local adapter | You are proving a concept or shipping a private integration | Fastest path when no shared package is needed |
Path 1: Upstream in eeg-web-ble
Choose this when:
- the device can work through Web Bluetooth in a browser
- the integration is likely to be reused by more than one app
- you want one shared implementation of transport behavior
- add a device module under the BLE package
- reuse
BleTransport - add mocked tests
- update consumer docs and device notes
This is the best path for a public, durable integration that should feel like
a first-class part of the SDK.
Path 2: Separate Package
Choose this when the device needs more than a clean browser BLE flow. Typical reasons:| Situation | Why a separate package helps |
|---|---|
| Licensed or heavy vendor SDK | Keeps extra dependencies out of the main BLE package |
| Localhost helper or native bridge | Lets you ship a bridge-specific transport cleanly |
| Independent release cadence | Lets the vendor or partner own versioning and support |
HeadbandTransport, or a thin wrapper around
one, so app code stays consistent with the rest of the Elata stack.
Path 3: App-Local Adapter
Choose this when speed matters more than reuse. This is a good fit for:- a private customer deployment
- a fast proof of concept
- evaluation work before a public package exists
Decision Order
Ask whether the integration should be reusable
If multiple apps would benefit, start by assuming an upstream path.
Check for browser BLE blockers
If Web Bluetooth will not work, or if a native bridge is required, move to a
separate package.
Decide who owns long-term support
Shared support usually belongs upstream. Vendor-owned release lines often fit
better in a separate package.
Paths to Avoid
Do not choose an app-local adapter just because it is easy in the first hour. That usually creates extra work later if the integration becomes public. Do not push a heavy, bridge-based, or licensed integration into the shared BLE package either. Keep the public package lean.Related Docs
Next
Transport Contract
Review the shared interfaces your chosen path must still satisfy.
Protocol Requirements
Gather the protocol details you need before implementation begins.