Installation¶
Splice installs as a single Python package that ships the splice CLI and the optional splice-tui console. This page covers prerequisites, a from-source editable install, every optional extra, and how to verify the result.
Prerequisites¶
| Requirement | Needed for | Notes |
|---|---|---|
| Python ≥ 3.10 | Everything | requires-python = ">=3.10" in pyproject.toml. |
| PostgreSQL 16 | The CLI + Database stack only | Used for the persistent catalog, jobs, and telemetry history. Not required for the Python API, simulation, or the MCP server. |
| A C toolchain / build deps | Building some wheels | Most dependencies ship binary wheels (psycopg[binary], grpcio), so a compiler is usually unnecessary. |
No database? No problem
The Python API, simulation mode, and the MCP server run entirely in memory with no PostgreSQL and no config files. You only need a database when you use the splice --config ... setup | run CLI stack, which persists the catalog, jobs, and history.
The core install always pulls these runtime dependencies (from pyproject.toml):
sqlalchemy>=2.0,psycopg[binary]>=3.1— ORM and PostgreSQL driverpyyaml>=6.0— config parsingpyang>=2.7.1— YANG model parsinggrpcio>=1.66,grpcio-tools>=1.66— the gNMI/gRPC serverncclient>=0.6,paramiko>=3,<4— NETCONF over SSHdefusedxml>=0.7— hardened XML parsing
Why paramiko is pinned to >=3,<4
paramiko 4.x removed the SHA-1 key-exchange algorithms (diffie-hellman-group14-sha1, diffie-hellman-group1-sha1) that many optical and legacy NETCONF devices still require. Splice pins paramiko to the 3.x line so the SSH transport can negotiate with them. If you install paramiko separately, keep it below 4.0 or the bridge may fail to connect to older gear.
Install from source¶
Splice is installed editable (-e) from a clone of the repository.
git clone https://github.com/Open-Ireland-Testbed/splice.git
cd splice
python -m venv .venv
source .venv/bin/activate
pip install -e . # core CLI + gNMI server
This registers two console entry points (see [project.scripts]):
| Command | Entry point | Provided by |
|---|---|---|
splice |
splice.cli:main |
Core install |
splice-tui |
splice.tui:main |
Requires the [tui] extra |
Without an editable install
If you prefer not to install the package, you can still run the CLI directly from the source tree:
Optional extras¶
Splice keeps heavy or specialized dependencies out of the core install. Add them with the standard pip install -e ".[extra]" syntax. Extras can be combined: pip install -e ".[tui,mcp,search]".
| Extra | Installs | Enables |
|---|---|---|
tui |
textual>=2.0 |
The interactive splice-tui console — see the TUI Guide. |
mcp |
mcp>=1.0 |
The MCP server (splice mcp) that exposes the bridge as tools for AI agents. |
search |
sentence-transformers>=2.2, numpy>=1.24 |
Local semantic path search (embeddings) blended into hybrid catalog search. |
openai |
openai>=1.0, numpy>=1.24 |
Semantic path search via OpenAI embeddings instead of local models. |
kafka |
confluent-kafka>=2.3 |
Publishing telemetry and trigger events to Kafka. |
docs |
mkdocs-material>=9.5, mkdocstrings[python]>=0.24, pymdown-extensions>=10 |
Building this documentation site locally. |
# Common combinations
pip install -e ".[tui]" # interactive console
pip install -e ".[mcp]" # AI-agent interface
pip install -e ".[search]" # local semantic search
pip install -e ".[tui,mcp,search]" # full developer setup
Search modes degrade gracefully
Keyword search (BM25) is always available with the core install — it needs no extra. Installing [search] or [openai] adds embedding-based semantic ranking that blends into the default hybrid search mode. Without either extra, hybrid search transparently falls back to BM25.
Choosing search vs openai
Pick search for a fully local, offline embedding model (sentence-transformers). Pick openai if you would rather call the OpenAI embeddings API and avoid downloading model weights. Installing both is unnecessary.
Verifying the install¶
Confirm the CLI is on your path:
You should see the full command list (init, setup, run, doctor, find-paths, mcp, and more). Every command except init and mcp requires a --config file.
The fastest end-to-end check needs no hardware and no database — run Splice against the bundled simulated OpenROADM device:
In another terminal, query it like any real gNMI server:
Or read a value straight from the simulated device through the Python API, which exercises the install without starting a server:
from splice.api.device import Device
with Device("sim://openroadm") as dev:
print(dev.get("/org-openroadm-device/node-id"))
If you installed the TUI extra, verify its entry point too:
Database setup (CLI stack only)¶
When you move from simulation to the persistent CLI workflow, point db.url in your config at a PostgreSQL 16 instance. The schema is created by the bundled migrations, which run automatically as part of setup (or on their own via migrate):
See Configuration for the db.url format and the rest of the config reference, and Quickstart for the first-device walkthrough.
Running in containers¶
For container and production deployment, Splice ships a Dockerfile and a docker-compose.yml (bundling PostgreSQL). Those are covered in Deployment rather than here.
Next steps¶
- Quickstart — onboard your first real device.
- Configuration — every config section, with examples and defaults.
- TUI Guide — the interactive operator console.
- Python API — the database-free
Deviceclass.