octantis-plugin-sdk
Plugin SDK for Octantis — the open-core, OTLP-native incident investigator.
This package defines the stable public contract between Octantis and plugin authors: six Protocol interfaces, shared data types, and the lifecycle they guarantee.
Octantis uses "Ingester" for its event-source Protocol, distinct from the OpenTelemetry Collector's "receiver" pipeline stage. An Ingester plugin lives inside the Octantis process and produces SDK
Eventinstances.
- License: Apache-2.0 (permissive — your plugin is NOT obligated to be AGPL just because Octantis core is)
- Stability: semantic versioning. Breaking changes require a major bump.
- No runtime deps on Octantis core: depend on this SDK only.
Install
pip install octantis-plugin-sdk
Protocols
Octantis discovers plugins via six Python entry-point groups. Implement the matching Protocol and register under the matching group.
| Protocol | Entry-point group | Purpose |
|---|---|---|
Ingester |
octantis.ingesters |
Event sources (OTLP gRPC, OTLP HTTP, pull scrapers, log tailers). |
Storage |
octantis.storage |
Persistence backends (investigations, cooldown state). |
MCPConnector |
octantis.mcp |
MCP tool providers (Grafana, K8s, Docker, AWS, custom). |
Processor |
octantis.processors |
Event-pipeline stages (trigger filter, cooldown, enrichers). |
Notifier |
octantis.notifiers |
Outbound destinations (Slack, Discord, email, webhook). |
UIProvider |
octantis.ui |
UI surfaces (enterprise tier only). |
Minimal plugin example
# my_notifier/plugin.py
from octantis_plugin_sdk import Notifier, InvestigationResult
class MyNotifier:
name = "my-notifier"
version = "0.1.0"
def setup(self, config: dict) -> None:
self._url = config["webhook_url"]
def teardown(self) -> None:
pass
async def send(self, result: InvestigationResult) -> None:
...
Register in your pyproject.toml:
[project.entry-points."octantis.notifiers"]
my-notifier = "my_notifier.plugin:MyNotifier"
Shared types
Event— the canonical event passed through the pipeline.InvestigationResult— the output of an investigation workflow.Tool— an MCP tool exposed to the investigator.PluginMetadata— optional structured metadata a plugin may expose.
See the Protocol source files for the full contracts.
Tier limits
Octantis enforces plugin-count limits by license tier at load time:
| Tier | MCPConnectors | Notifiers | UIProvider |
|---|---|---|---|
| free | 1 | 1 | 0 |
| pro | 3 | 3 | 0 |
| enterprise | unlimited | unlimited | 1 |
Plugin installation is never blocked — only loading beyond your tier's limits is.
Metadata
Release files for octantis-plugin-sdk 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| octantis_plugin_sdk-0.1.0.tar.gz | 20.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| octantis_plugin_sdk-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 33.1 kB
Release files / octantis_plugin_sdk-0.1.0.tar.gz
| Download URL | octantis_plugin_sdk-0.1.0.tar.gz |
|---|---|
| Size | 20.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
21c8d6bbb7b2e259f55b2a627b644875cf98e0c72ec2c4a0b27660e2037d95d2
|
|
BLAKE2b-256 checksum How to use checksums |
4801863c567fcd72a66ae01094106710a5fefecf4c07285b2515d01f0de6220f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 13, 2026.
Transparency logRelease files / octantis_plugin_sdk-0.1.0-py3-none-any.whl
| Download URL | octantis_plugin_sdk-0.1.0-py3-none-any.whl |
|---|---|
| Size | 12.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
57520d5c26725835623de017956a85f1424217428141d388f39fc00027af3a40
|
|
BLAKE2b-256 checksum How to use checksums |
e2800b5c6867cfc2eb11f6856dc2a0910792a10a5f82adb0b08832f3343b2e41
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 13, 2026.
Transparency log