Infrastructure as Constraints — write it once, scale it with a word.
Project description
Skaal
Infrastructure as Constraints — write your app once, scale it with a word.
Skaal lets you describe your application's storage and compute needs as constraints, then automatically selects the right infrastructure backend (local SQLite, Redis, PostgreSQL, AWS DynamoDB, GCP Firestore, …) that satisfies those constraints for your target environment.
Quickstart
pip install skaal
from skaal import App, Module, storage, compute
class TodoModule(Module):
@storage(reads_per_sec=100, writes_per_sec=50)
async def todos(self): ...
@compute(max_replicas=4)
async def handle_create(self, item: dict): ...
app = App(modules=[TodoModule()])
# Solve constraints and generate an infrastructure plan
skaal plan --app myapp:app --catalog catalogs/local.toml
# Run locally
skaal run --app myapp:app
Cloud Deployment
# Deploy to AWS
pip install "skaal[aws]"
skaal deploy --app myapp:app --target aws --catalog catalogs/aws.toml
# Deploy to GCP
pip install "skaal[gcp]"
skaal deploy --app myapp:app --target gcp --catalog catalogs/gcp.toml
How It Works
- Annotate your modules with resource constraints (
@storage,@compute,@scale, …) - Plan — the Z3 SMT solver picks the cheapest backend satisfying all constraints from your catalog
- Build — Skaal generates Dockerfiles, Pulumi programs, and handler entrypoints
- Deploy — push to your cloud or run locally with a single command
Installation
| Extra | Installs |
|---|---|
skaal |
Core (local SQLite + Redis) |
skaal[aws] |
+ boto3, Pulumi AWS, asyncpg |
skaal[gcp] |
+ google-cloud-firestore/storage, Cloud SQL connector, Pulumi GCP |
skaal[examples] |
+ Dash, FastAPI, dash-bootstrap-components |
License
GPL-3.0-or-later
Project details
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 skaal-0.2.0.tar.gz.
File metadata
- Download URL: skaal-0.2.0.tar.gz
- Upload date:
- Size: 186.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
44178447965f9690d9cdd40747abc3d095307a45143f721c6ae28db46cd7cece
|
|
| MD5 |
0fd27295943ed1f92432fb1826ebaeda
|
|
| BLAKE2b-256 |
73a4fcfd1350c6c7cc030b2e0c74f1b97cad0e9a7c9e8764e0a0afb7d5bd165e
|
Provenance
The following attestation bundles were made for skaal-0.2.0.tar.gz:
Publisher:
release.yml on Elouen-ginat/Skaal
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
skaal-0.2.0.tar.gz -
Subject digest:
44178447965f9690d9cdd40747abc3d095307a45143f721c6ae28db46cd7cece - Sigstore transparency entry: 1278430708
- Sigstore integration time:
-
Permalink:
Elouen-ginat/Skaal@04136c41d12688d415824bec26994101a347c271 -
Branch / Tag:
refs/tags/v0.0.2-alpha - Owner: https://github.com/Elouen-ginat
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@04136c41d12688d415824bec26994101a347c271 -
Trigger Event:
push
-
Statement type:
File details
Details for the file skaal-0.2.0-py3-none-any.whl.
File metadata
- Download URL: skaal-0.2.0-py3-none-any.whl
- Upload date:
- Size: 178.6 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 |
63b353464fb92e83fe9d02e10bb48df75a599a051a20cbf5d12e830d7752a442
|
|
| MD5 |
c4ae4a8f6e000d942097636bc377406f
|
|
| BLAKE2b-256 |
890077d6dda142066728b7c0b02136ca42e427da18d099f53131bace2e2e3503
|
Provenance
The following attestation bundles were made for skaal-0.2.0-py3-none-any.whl:
Publisher:
release.yml on Elouen-ginat/Skaal
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
skaal-0.2.0-py3-none-any.whl -
Subject digest:
63b353464fb92e83fe9d02e10bb48df75a599a051a20cbf5d12e830d7752a442 - Sigstore transparency entry: 1278430720
- Sigstore integration time:
-
Permalink:
Elouen-ginat/Skaal@04136c41d12688d415824bec26994101a347c271 -
Branch / Tag:
refs/tags/v0.0.2-alpha - Owner: https://github.com/Elouen-ginat
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@04136c41d12688d415824bec26994101a347c271 -
Trigger Event:
push
-
Statement type: