Skip to main content

scalo

The runtime layer for Python control-plane services: config, logging, metrics, health probes, secrets and a service CLI, already wired together. Subclass one class and your service reads its config, logs in the right format for where it runs, and serves its health probes.

It is built for APIs, orchestrators, CLI tools and integration glue. For the hot path there is a Rust sister library, scalo-rs, with the same conventions and a different API.

What it gives you

  • A seven-layer config cascade, from CLI flags and env vars down to YAML and defaults, that reads the same in a laptop shell and a Kubernetes pod.
  • Structured logs, JSON in a container and readable text at a terminal. Credentials, tokens and keys are masked, and so are cards, IBANs, emails and phone numbers, and Australian ABN, ACN, TFN and Medicare numbers where a keyword names them. TRACE records skip the scrubber by default.
  • ServiceApp: subclass it and get run, version, config-check and generate-artefacts, with config and logging started for you, and metrics too once scalo[metrics] is installed.
  • /livez and /readyz on an observability port kept apart from your application's own.
  • With the metrics extra, Prometheus and OpenTelemetry metrics, process and container gauges included, scraped from /metrics on the same port. Without a metrics manager that path answers 404.
  • Secrets from OpenBao or Vault, AWS, GCP, Azure, and Kubernetes, one extra per backend.
  • A deployment contract: return one from deployment_contract() and generate-artefacts writes your runtime Dockerfile and the contract the scalo-service Helm chart renders from.
  • Kafka, CEL expressions and an HTTP client with jittered retry, each behind its own extra.

Example

uv add scalo
from scalo.cli import ServiceApp, VersionInfo
from scalo.logger import logger


class Greeter(ServiceApp):
    name = "greeter"
    env_prefix = "GREETER"

    def version_info(self) -> VersionInfo:
        return VersionInfo(self.name, "1.0.0")

    def run_service(self, config) -> None:
        logger.info("hello", target=config.get("target", "world"))


if __name__ == "__main__":
    Greeter().cli()

GREETER_TARGET=team python greeter.py run logs hello with target=team, and python greeter.py config-check validates the config without starting anything.

Extras

Extra Adds
api FastAPI conventions: operation ids, ETag and If-Match, problem+json errors, pagination
cli A whole CLI generated from an OpenAPI spec
mcp MCP tools generated from a scalo.api app's spec, served on the same app
http An httpx client with jittered retry
metrics Prometheus and OTLP export, process and container gauges
opentelemetry The OpenTelemetry half of metrics on its own
expression CEL expressions
kafka Produce, consume and schema inference
deployment The deployment contract and its Dockerfile and manifest generators
secrets-vault, secrets-aws, secrets-gcp, secrets-azure, secrets-kubernetes One secrets backend each
secrets Every secrets backend

Pick the secrets backend you use rather than secrets, since each backend brings its own cloud SDK.

Docs and source are at https://github.com/hyperi-io/scalo-py. Requires Python 3.14 or later. Licensed Apache-2.0: https://github.com/hyperi-io/scalo-py/blob/main/LICENSE.

Metadata

Release files for scalo 2.32.6

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

Source distribution (sdist)

Source distribution for scalo 2.32.6
File Size Uploaded Provenance Actions
scalo-2.32.6.tar.gz 550.5 kB Without provenance Details for scalo-2.32.6.tar.gz

Built distribution (wheel)

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

Total release size: 1.2 MB

Release files / scalo-2.32.6.tar.gz

Download URL scalo-2.32.6.tar.gz
Size 550.5 kB
Tags Source
SHA-256 checksum
How to use checksums
e9744cf1b9a409f6ed6af561c1f045010695380ea700a0945dd5cf60bfe1a99d
BLAKE2b-256 checksum
How to use checksums
497a4ea9ae65c1299c1067a991f8aa61f11f9bbe9f6f771bd2e51092811befc1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.7 {"installer":{"name":"uv","version":"0.13.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / scalo-2.32.6-py3-none-any.whl

Download URL scalo-2.32.6-py3-none-any.whl
Size 643.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
976d756c2678f8077e124a6c4cdec861fb7f26b57746cc6cd0484f40e39cb823
BLAKE2b-256 checksum
How to use checksums
f3c601bb84c7d86bfe1fbd0db5e2cc6ef1cc3b10d2e8f1f3cc8033389552fc78
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.13.7 {"installer":{"name":"uv","version":"0.13.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for scalo 2.32.6

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

2.32.6 This release

2 release files No provenance

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