TODO: short description of acu
Project description
Architect Composer Utility (ACU)
Write once, deploy everywhere. ACU is a provider-agnostic infrastructure composition tool that lets you define enterprise-grade deployments once and run them across any environment—local, staging, or production.
Table of Contents
Overview
ACU simplifies infrastructure orchestration by decoupling infrastructure definitions from provider
implementations. Define your infrastructure topology in a single infra.yml file—including
databases, clusters, message queues, and more—without committing to a specific provider, version, or
SQL/NoSQL flavor. When it's time to deploy, choose your provider and let ACU handle the translation.
Philosophy
- Provider Agnostic: Define resources once; deploy to any provider (AWS, Azure, GCP, Kubernetes, Docker, bare metal).
- Developer-Friendly: Simple YAML syntax makes it easy for developers to spin up local infrastructure environments.
- Production Ready: Scale from local development to enterprise deployments without rewriting configs.
Features
✅ Provider-Agnostic Infrastructure Definitions — Define databases, clusters, queues, and services without provider lock-in.
✅ Multi-Cloud & Multi-Environment Support — Deploy the same infrastructure template to Kubernetes, Docker, VMs, and bare metal.
✅ Local-to-Production Parity — Simulate enterprise-grade infrastructure locally; deploy to production with the same definitions.
✅ Cross-Platform CLI — Available on Linux, macOS, and Windows via uvx.
✅ Fast, Rust-Powered — Built with Rust for speed and reliability.
Installation
Using uvx (Recommended)
uvx acu
Using uv Tool Manager
uv tool install acu
acu --version
From Source
git clone https://github.com/carlosferreyra/acu
cd acu
uv build
Quick Start
1. Create Your Infrastructure Definition
Initialize a new infra.yml file (like Dockerfile for Docker):
acu new
This creates a minimal or templated infra.yml in your current directory.
2. Define Your Infrastructure
Edit infra.yml to describe your infrastructure. See the full example at
docs/infra.example.yml for a validated, provider-agnostic template with
resources, connections, labels, and scopes.
3. Deploy
Run commands from the directory containing infra.yml (no need to specify file path):
# Spin up infrastructure locally for development/testing
acu run dev
# Validate infrastructure definition
acu validate
# Deploy to production with environment-specific settings
acu deploy
# Dry-run (simulate without deploying)
acu deploy --dry-run
How It Works
- Define infrastructure in a provider-agnostic YAML format (
infra.yml). - Validate your definitions for correctness.
- Simulate locally to test topology and dependencies.
- Deploy to your chosen provider (Docker, Kubernetes, cloud, etc.) without changing the definition.
Resource type defaults and allowed fields: see docs/resource-types.md.
The key insight: infrastructure definitions describe what you need, not how to provision it. ACU translates your definitions into provider-specific configurations at deployment time.
Usage Examples
Example 1: Local Development Environment
Spun up a multi-service stack locally for testing:
# Create infra.yml
acu new --template multi-service
# Run everything locally with Docker
acu run dev
This starts databases, clusters, and queues locally using Docker, perfect for development.
Example 2: Production Deployment
Deploy the same infrastructure to production:
# Deploy to Kubernetes, cloud providers, or bare metal
acu deploy
This uses the production settings defined in infra.yml to provision real infrastructure.
Example 3: Multi-Provider Deployment
acu deploy --providers docker,kubernetes,aws
Or configure all providers in infra.yml and deploy to all with:
acu deploy --all-providers
This translates your single infrastructure definition into Docker Compose, Kubernetes manifests, and AWS CloudFormation—all without touching the original definition.
Contributing
Contributions are welcome! ACU is in active development, and we're looking for:
- Provider implementations (Kubernetes, Docker, Terraform, CloudFormation, etc.)
- Infrastructure resource types (networks, storage, monitoring, etc.)
- Documentation and examples
- Bug reports and feature requests
See CONTRIBUTING.md for guidelines.
License
ACU is dual-licensed under the MIT License and other permissive licenses for compatibility with projects like Ruff and uv.
See LICENSE for details.
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 Distributions
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 acu-0.1.6.tar.gz.
File metadata
- Download URL: acu-0.1.6.tar.gz
- Upload date:
- Size: 15.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f24fcdca855e52d855d99e67ec08ddf6fe2d7064a08c2a85481115cc7e421cd
|
|
| MD5 |
f58e58cdba8d078b0ae2a1c63efa387e
|
|
| BLAKE2b-256 |
3f6582baa91ced9523e98c17eea558cb2f03884d26faf367bdfe5f9ed09534ba
|
Provenance
The following attestation bundles were made for acu-0.1.6.tar.gz:
Publisher:
publish.yml on carlosferreyra/acu
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
acu-0.1.6.tar.gz -
Subject digest:
3f24fcdca855e52d855d99e67ec08ddf6fe2d7064a08c2a85481115cc7e421cd - Sigstore transparency entry: 783002346
- Sigstore integration time:
-
Permalink:
carlosferreyra/acu@deeb4695bd89ff72604cd0d47fe9148928c637c7 -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/carlosferreyra
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@deeb4695bd89ff72604cd0d47fe9148928c637c7 -
Trigger Event:
push
-
Statement type:
File details
Details for the file acu-0.1.6-cp314-abi3-win_amd64.whl.
File metadata
- Download URL: acu-0.1.6-cp314-abi3-win_amd64.whl
- Upload date:
- Size: 92.7 kB
- Tags: CPython 3.14+, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4862b0632ef20b3656d5b509d3e3ac12ada4bbeb08ff26f98abb1ccf54ca3e32
|
|
| MD5 |
d47a0f58da3e65df1bf841e6dec1b2c7
|
|
| BLAKE2b-256 |
899e69d9894cb78d24cd3f80b18a76de99a0332195005ab97965fabe08acfbc0
|
Provenance
The following attestation bundles were made for acu-0.1.6-cp314-abi3-win_amd64.whl:
Publisher:
publish.yml on carlosferreyra/acu
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
acu-0.1.6-cp314-abi3-win_amd64.whl -
Subject digest:
4862b0632ef20b3656d5b509d3e3ac12ada4bbeb08ff26f98abb1ccf54ca3e32 - Sigstore transparency entry: 783002361
- Sigstore integration time:
-
Permalink:
carlosferreyra/acu@deeb4695bd89ff72604cd0d47fe9148928c637c7 -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/carlosferreyra
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@deeb4695bd89ff72604cd0d47fe9148928c637c7 -
Trigger Event:
push
-
Statement type:
File details
Details for the file acu-0.1.6-cp314-abi3-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: acu-0.1.6-cp314-abi3-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 241.1 kB
- Tags: CPython 3.14+, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ab353f2b050298a7f3c31473fa8dd3cf3cd1c9da41e862f81785c97429e5ed31
|
|
| MD5 |
b66447d9b2f291128d8486e01a2b89fb
|
|
| BLAKE2b-256 |
0fc0749b4ea308683cab08834fc8e9868de398484d19dc597a83269c10772d0d
|
Provenance
The following attestation bundles were made for acu-0.1.6-cp314-abi3-manylinux_2_34_x86_64.whl:
Publisher:
publish.yml on carlosferreyra/acu
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
acu-0.1.6-cp314-abi3-manylinux_2_34_x86_64.whl -
Subject digest:
ab353f2b050298a7f3c31473fa8dd3cf3cd1c9da41e862f81785c97429e5ed31 - Sigstore transparency entry: 783002358
- Sigstore integration time:
-
Permalink:
carlosferreyra/acu@deeb4695bd89ff72604cd0d47fe9148928c637c7 -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/carlosferreyra
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@deeb4695bd89ff72604cd0d47fe9148928c637c7 -
Trigger Event:
push
-
Statement type:
File details
Details for the file acu-0.1.6-cp314-abi3-manylinux_2_24_x86_64.whl.
File metadata
- Download URL: acu-0.1.6-cp314-abi3-manylinux_2_24_x86_64.whl
- Upload date:
- Size: 197.9 kB
- Tags: CPython 3.14+, manylinux: glibc 2.24+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6309deb4b1dcab18ca62628ddcf068aa51065a71cf7bc52e7b079d1f2973f49a
|
|
| MD5 |
c40c48edddcd4cc7cadf32d725ee9b35
|
|
| BLAKE2b-256 |
64bcb77f29a11f014cae0e0699a978cd58141041cbb6ecc06669fae7038293cb
|
Provenance
The following attestation bundles were made for acu-0.1.6-cp314-abi3-manylinux_2_24_x86_64.whl:
Publisher:
publish.yml on carlosferreyra/acu
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
acu-0.1.6-cp314-abi3-manylinux_2_24_x86_64.whl -
Subject digest:
6309deb4b1dcab18ca62628ddcf068aa51065a71cf7bc52e7b079d1f2973f49a - Sigstore transparency entry: 783002355
- Sigstore integration time:
-
Permalink:
carlosferreyra/acu@deeb4695bd89ff72604cd0d47fe9148928c637c7 -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/carlosferreyra
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@deeb4695bd89ff72604cd0d47fe9148928c637c7 -
Trigger Event:
push
-
Statement type:
File details
Details for the file acu-0.1.6-cp314-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: acu-0.1.6-cp314-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 172.4 kB
- Tags: CPython 3.14+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
68de31337ef0689fdf4e151925dbf45db07a1e4b10ed1a72e43140d76edd9537
|
|
| MD5 |
ee435e30e6410505aeab8459e6f16ce3
|
|
| BLAKE2b-256 |
38a97461c9252f759c9ea4650358d159795c36bfbe7a8aae0aec32ca163f9701
|
Provenance
The following attestation bundles were made for acu-0.1.6-cp314-abi3-macosx_11_0_arm64.whl:
Publisher:
publish.yml on carlosferreyra/acu
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
acu-0.1.6-cp314-abi3-macosx_11_0_arm64.whl -
Subject digest:
68de31337ef0689fdf4e151925dbf45db07a1e4b10ed1a72e43140d76edd9537 - Sigstore transparency entry: 783002350
- Sigstore integration time:
-
Permalink:
carlosferreyra/acu@deeb4695bd89ff72604cd0d47fe9148928c637c7 -
Branch / Tag:
refs/tags/v0.1.6 - Owner: https://github.com/carlosferreyra
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@deeb4695bd89ff72604cd0d47fe9148928c637c7 -
Trigger Event:
push
-
Statement type: