Skip to main content

TODO: short description of acu

Project description

Architect Composer Utility (ACU)

PyPI Python License CI/CD

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

  1. Define infrastructure in a provider-agnostic YAML format (infra.yml).
  2. Validate your definitions for correctness.
  3. Simulate locally to test topology and dependencies.
  4. 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

acu-0.1.6.tar.gz (15.0 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

acu-0.1.6-cp314-abi3-win_amd64.whl (92.7 kB view details)

Uploaded CPython 3.14+Windows x86-64

acu-0.1.6-cp314-abi3-manylinux_2_34_x86_64.whl (241.1 kB view details)

Uploaded CPython 3.14+manylinux: glibc 2.34+ x86-64

acu-0.1.6-cp314-abi3-manylinux_2_24_x86_64.whl (197.9 kB view details)

Uploaded CPython 3.14+manylinux: glibc 2.24+ x86-64

acu-0.1.6-cp314-abi3-macosx_11_0_arm64.whl (172.4 kB view details)

Uploaded CPython 3.14+macOS 11.0+ ARM64

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

Hashes for acu-0.1.6.tar.gz
Algorithm Hash digest
SHA256 3f24fcdca855e52d855d99e67ec08ddf6fe2d7064a08c2a85481115cc7e421cd
MD5 f58e58cdba8d078b0ae2a1c63efa387e
BLAKE2b-256 3f6582baa91ced9523e98c17eea558cb2f03884d26faf367bdfe5f9ed09534ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for acu-0.1.6.tar.gz:

Publisher: publish.yml on carlosferreyra/acu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for acu-0.1.6-cp314-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 4862b0632ef20b3656d5b509d3e3ac12ada4bbeb08ff26f98abb1ccf54ca3e32
MD5 d47a0f58da3e65df1bf841e6dec1b2c7
BLAKE2b-256 899e69d9894cb78d24cd3f80b18a76de99a0332195005ab97965fabe08acfbc0

See more details on using hashes here.

Provenance

The following attestation bundles were made for acu-0.1.6-cp314-abi3-win_amd64.whl:

Publisher: publish.yml on carlosferreyra/acu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for acu-0.1.6-cp314-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 ab353f2b050298a7f3c31473fa8dd3cf3cd1c9da41e862f81785c97429e5ed31
MD5 b66447d9b2f291128d8486e01a2b89fb
BLAKE2b-256 0fc0749b4ea308683cab08834fc8e9868de398484d19dc597a83269c10772d0d

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for acu-0.1.6-cp314-abi3-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 6309deb4b1dcab18ca62628ddcf068aa51065a71cf7bc52e7b079d1f2973f49a
MD5 c40c48edddcd4cc7cadf32d725ee9b35
BLAKE2b-256 64bcb77f29a11f014cae0e0699a978cd58141041cbb6ecc06669fae7038293cb

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for acu-0.1.6-cp314-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 68de31337ef0689fdf4e151925dbf45db07a1e4b10ed1a72e43140d76edd9537
MD5 ee435e30e6410505aeab8459e6f16ce3
BLAKE2b-256 38a97461c9252f759c9ea4650358d159795c36bfbe7a8aae0aec32ca163f9701

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page