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.
Metadata
Release files for acu 0.1.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| acu-0.1.6.tar.gz | 15.0 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| acu-0.1.6-cp314-abi3-win_amd64.whl | CPython 3.14 | abi3 | Windows x86-64 | Details |
| acu-0.1.6-cp314-abi3-manylinux_2_34_x86_64.whl | CPython 3.14 | abi3 | Linux glibc 2.34+ x86-64 | Details |
| acu-0.1.6-cp314-abi3-manylinux_2_24_x86_64.whl | CPython 3.14 | abi3 | Linux glibc 2.24+ x86-64 | Details |
| acu-0.1.6-cp314-abi3-macosx_11_0_arm64.whl | CPython 3.14 | abi3 | macOS 11.0+ ARM64 | Details |
Total release size: 719.2 kB
Release files / acu-0.1.6.tar.gz
| Download URL | acu-0.1.6.tar.gz |
|---|---|
| Size | 15.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3f24fcdca855e52d855d99e67ec08ddf6fe2d7064a08c2a85481115cc7e421cd
|
|
BLAKE2b-256 checksum How to use checksums |
3f6582baa91ced9523e98c17eea558cb2f03884d26faf367bdfe5f9ed09534ba
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Dec 31, 2025.
Transparency logRelease files / acu-0.1.6-cp314-abi3-win_amd64.whl
| Download URL | acu-0.1.6-cp314-abi3-win_amd64.whl |
|---|---|
| Size | 92.7 kB |
| Tags | CPython 3.14 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
4862b0632ef20b3656d5b509d3e3ac12ada4bbeb08ff26f98abb1ccf54ca3e32
|
|
BLAKE2b-256 checksum How to use checksums |
899e69d9894cb78d24cd3f80b18a76de99a0332195005ab97965fabe08acfbc0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Dec 31, 2025.
Transparency logRelease files / acu-0.1.6-cp314-abi3-manylinux_2_34_x86_64.whl
| Download URL | acu-0.1.6-cp314-abi3-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 241.1 kB |
| Tags | CPython 3.14 Linux glibc 2.34+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
ab353f2b050298a7f3c31473fa8dd3cf3cd1c9da41e862f81785c97429e5ed31
|
|
BLAKE2b-256 checksum How to use checksums |
0fc0749b4ea308683cab08834fc8e9868de398484d19dc597a83269c10772d0d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Dec 31, 2025.
Transparency logRelease files / acu-0.1.6-cp314-abi3-manylinux_2_24_x86_64.whl
| Download URL | acu-0.1.6-cp314-abi3-manylinux_2_24_x86_64.whl |
|---|---|
| Size | 197.9 kB |
| Tags | CPython 3.14 Linux glibc 2.24+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
6309deb4b1dcab18ca62628ddcf068aa51065a71cf7bc52e7b079d1f2973f49a
|
|
BLAKE2b-256 checksum How to use checksums |
64bcb77f29a11f014cae0e0699a978cd58141041cbb6ecc06669fae7038293cb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Dec 31, 2025.
Transparency logRelease files / acu-0.1.6-cp314-abi3-macosx_11_0_arm64.whl
| Download URL | acu-0.1.6-cp314-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 172.4 kB |
| Tags | CPython 3.14 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
68de31337ef0689fdf4e151925dbf45db07a1e4b10ed1a72e43140d76edd9537
|
|
BLAKE2b-256 checksum How to use checksums |
38a97461c9252f759c9ea4650358d159795c36bfbe7a8aae0aec32ca163f9701
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Dec 31, 2025.
Transparency log