Skip to main content
 ___ _ __   ___ _ __ ___
/ __| '_ \ / _ \ '__/ _ \
\__ \ |_) |  __/ | | (_) |
|___/ .__/ \___|_|  \___/
    |_|

Self-healing supervision agent for Linux hosts and Kubernetes.

Spero watches the things you run — processes, services, disks, workloads — notices when they break, and heals them under policy-governed autonomy. It sits between a single-host tool like Monit and a full Prometheus + Alertmanager + Ansible stack: lightweight, agent-based, cluster-aware, with an AI layer for prediction, root-cause, and policy-gated remediation.

Shipped under Altikva.

Status: pre-alpha, but the spine is complete. Spero supervises and heals Linux hosts (local + asyncssh) and Kubernetes (kubectl) through one engine, with an AI layer for prediction, root-cause, natural-language queries, and agentic (policy-gated) remediation. 91 tests, ruff + mypy clean.

Concepts

Spero is built on four seams so it spans hosts today and Kubernetes next without re-architecting:

Seam Question Examples
Provider where things run local, SSH host, Kubernetes
Probe how you know it is healthy process, systemd, port, disk, pod-ready
Remediation what to do about it restart, respawn, rotate, rollout, scale
Policy the declared intent YAML: target → probe → remediations + autonomy

Remediations carry an autonomy level — suggest, gated, or auto — so low-risk healing happens on its own while high-risk actions wait for a human.

Install

pip install spero            # or: uv pip install spero
pip install "spero[ai]"      # add the Claude-backed AI layer
pip install "spero[k8s]"     # add the Kubernetes provider deps

Quickstart

spero status                       # show targets from policies/example.yaml
spero run                          # run one supervision cycle
spero watch                        # supervise continuously (each target on its interval)
spero watch --ai-approve           # agentic: the model decides gated remediations
spero heal nginx                   # probe one target, walk its remediations interactively
spero ask "what flapped today?"    # natural-language query over the event history
spero serve                        # run the control-plane API on :8800

Data egress and privacy

With ANTHROPIC_API_KEY set, spero ask, spero diagnose, and --ai-approve send text to Anthropic's API: the question, target names, remediation params, and recorded event details (which can include command output). Event details are also stored in the local sqlite database. With no key, spero uses the NullLLM fallback and nothing leaves the host. To scrub likely secrets/PII from event text before it is sent to the model, set SPERO_REDACT_EVENTS=1 (best-effort; see src/spero/ai/redact.py). The control-plane endpoints that expose object YAML and pod logs are token-guarded; see deploy/k8s/README.md.

From source

git clone https://github.com/altikva/spero && cd spero
uv venv && source .venv/bin/activate
uv pip install -e ".[dev]"
pytest                             # run the suite

License

Spero is released under the ALTIKVA Dual License v1.0 (MIT and CC BY-NC-SA 4.0), SPDX MIT AND CC-BY-NC-SA-4.0. See LICENSE.

Metadata

Release files for spero 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for spero 0.4.0
File Size Uploaded
spero-0.4.0.tar.gz 319.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for spero 0.4.0
File Interpreter ABI Platform
spero-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 410.9 kB

Release files / spero-0.4.0.tar.gz

Download URL spero-0.4.0.tar.gz
Size 319.6 kB
Tags Source
SHA-256 checksum
How to use checksums
8cd216311a44242bec7e90d0902b72d4f62eaaa865d9f0a3532cbfc466868831
BLAKE2b-256 checksum
How to use checksums
95b00eaf8cb9db9d6e8506c1136cbd6e084cff8acabd306ebaad5495b54d800f
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 Jun 7, 2026.

Transparency log

Release files / spero-0.4.0-py3-none-any.whl

Download URL spero-0.4.0-py3-none-any.whl
Size 91.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f091a29bc610204610e013eca46fba187bbef62b41010676c96748bc5f985b78
BLAKE2b-256 checksum
How to use checksums
0c8f4d3d187e8c0cf991573cde024d8941211cfce3b264a15ac81f7ddee84372
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 Jun 7, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page