Plugin SDK for Octantis — Protocols and shared types for building Octantis plugins
Project description
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file octantis_plugin_sdk-0.1.0.tar.gz.
File metadata
- Download URL: octantis_plugin_sdk-0.1.0.tar.gz
- Upload date:
- Size: 20.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
21c8d6bbb7b2e259f55b2a627b644875cf98e0c72ec2c4a0b27660e2037d95d2
|
|
| MD5 |
8dfc9792d076b3161d5ed4024e216697
|
|
| BLAKE2b-256 |
4801863c567fcd72a66ae01094106710a5fefecf4c07285b2515d01f0de6220f
|
Provenance
The following attestation bundles were made for octantis_plugin_sdk-0.1.0.tar.gz:
Publisher:
release-sdk.yml on Vinny1892/octantis
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
octantis_plugin_sdk-0.1.0.tar.gz -
Subject digest:
21c8d6bbb7b2e259f55b2a627b644875cf98e0c72ec2c4a0b27660e2037d95d2 - Sigstore transparency entry: 1287840359
- Sigstore integration time:
-
Permalink:
Vinny1892/octantis@e3ecdec851f0badd23b6026cc7378483fc2458eb -
Branch / Tag:
refs/tags/sdk-v0.1.0 - Owner: https://github.com/Vinny1892
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-sdk.yml@e3ecdec851f0badd23b6026cc7378483fc2458eb -
Trigger Event:
push
-
Statement type:
File details
Details for the file octantis_plugin_sdk-0.1.0-py3-none-any.whl.
File metadata
- Download URL: octantis_plugin_sdk-0.1.0-py3-none-any.whl
- Upload date:
- Size: 12.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
57520d5c26725835623de017956a85f1424217428141d388f39fc00027af3a40
|
|
| MD5 |
671d881cd16bbdcc39571766be1704a4
|
|
| BLAKE2b-256 |
e2800b5c6867cfc2eb11f6856dc2a0910792a10a5f82adb0b08832f3343b2e41
|
Provenance
The following attestation bundles were made for octantis_plugin_sdk-0.1.0-py3-none-any.whl:
Publisher:
release-sdk.yml on Vinny1892/octantis
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
octantis_plugin_sdk-0.1.0-py3-none-any.whl -
Subject digest:
57520d5c26725835623de017956a85f1424217428141d388f39fc00027af3a40 - Sigstore transparency entry: 1287840461
- Sigstore integration time:
-
Permalink:
Vinny1892/octantis@e3ecdec851f0badd23b6026cc7378483fc2458eb -
Branch / Tag:
refs/tags/sdk-v0.1.0 - Owner: https://github.com/Vinny1892
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-sdk.yml@e3ecdec851f0badd23b6026cc7378483fc2458eb -
Trigger Event:
push
-
Statement type: