Architect: Infrastructure as Code for AWS
website·Indexed Apr 12, 2026
https://arc.codes/Architect is an open-source Infrastructure as Code framework for building Functional Web Apps on AWS. It uses a declarative manifest file (app.arc) to compile into AWS CloudFormation and SAM, enabling local development with `npx arc sandbox` and seamless deployment via `npx arc deploy`. The platform supports multiple runtimes including Node.js, Python, Deno, TypeScript, Ruby, Rust, Go, Java, and .NET. Key features include automatic dependency management, code sharing via `@shared` and `@views`, ESM support, session management, static asset handling, and CI/CD integration for GitHub Actions and GitLab Pipelines.
What's inside Architect
- Architect Inventory is an object passed to all Architect plugins that enumerates all resources in a project. It serves as the single source of truth for your project's state, representing every possible setting, option, and configuration in Architect.
What is Architect
Architect is an opinionated Infrastructure as Code framework for building Functional Web Apps (FWAs) on AWS. It provides low code and zero ceremony deployment with a manifest file that compiles into AWS CloudFormation and SAM applications. Architect ensures identical local, staging, and production environments and enforces least privilege IAM roles by default.Architect core principles
Architect follows four guiding principles: (1) Define app architecture using clear, generic language in plain text files; (2) Generated code must work locally and completely offline; (3) Deployments use standard CloudFormation templates that can be extended by users; (4) The manifest format, parser, and tooling are fully open and extensible. Note: While the manifest format is portable across cloud vendors, AWS is currently the only supported deployment target.@macros overview and deprecation
The
@macrosprimitive extends Architect apps by modifying CloudFormation templates via custom JavaScript functions. Macros allow developers to add any resources or modify existing ones, extending Architect into the entire AWS ecosystem supported by CloudFormation. They can also look for custom directives and add pre-deploy steps.Deprecation notice:
@macrosis no longer the preferred way to extend CloudFormation in Architect. It has been superseded by@pluginsdeploy.start. Existing@macrosextensions will continue to be supported but are no longer actively improved.Community resources and getting help
Architect is an open source project hosted by the OpenJS Foundation. You can ask for help by using the issue tracker to file bugs, request features, or ask questions. The project welcomes contributions and encourages newcomers to introduce themselves in issue trackers or chat.Mutate CloudFormation with deploy.start plugins
deploy.startplugins allow you to process and mutate Architect-generated CloudFormation prior to deployment. This enables deep customization of any Architect default behavior, as well as allowing apps to extend into the entire AWS ecosystem of services. Plugins run in sequence, with each plugin receiving the mutated CloudFormation document from the previous one.Plugins overview
Architect's plugin API exposes workflow lifecycle hooks (filesystem events in Sandbox) and interfaces for generating cloud resources (custom Lambdas, environment variables). Plugins extend or override Architect functionality for building Functional Web Apps with AWS.create plugins overview
createlifecycle hook plugins extend Architect's ability to generate new Lambda handlers when you expand your application. These plugins execute when users runarc create(also known asarc init). Usecreate.registerto specify which runtimes your plugin handles, and implementcreate.handlersto define how handlers are created.Deploy lifecycle hook plugins overview
Deploy lifecycle hook plugins extend Architect deployment capabilities by exposing methods that run at different stages of deployment. These plugins allow you to customize CloudFormation templates, create custom resources via service discovery, bypass AWS CloudFormation entirely (beta), and run arbitrary pre/post-deploy operations. All deploy methods receive a common parameter object containing arc, cloudformation, dryRun, inventory, stackName, and stage properties.Hydrate plugins overview
Hydrate plugins extend Architect's Hydrate tool for managing dependencies and shared code in serverless applications. They run as lifecycle hooks and can copy arbitrary files or folders into Lambda dependency directories (e.g.,./src/$pragma/$name/node_modules/for Node.js or./src/$pragma/$name/vendorfor Python/Ruby). Thehydrate.copyAPI runs after all dependency installation and shared file operations complete, ensuring filesystem mutations are present in final deployment artifacts.Define SQS queues with Lambda handlers
The@queuesdirective defines Amazon SQS topics paired with Lambda handler functions within theapp.arcproject manifest. Each queue defined will have a corresponding handler function generated insrc/queues/when runningarc create.Static assets overview
Architect projects support text and binary static assets (images, styles, scripts) stored locally in the/publicfolder by default. When deployed, assets are uploaded to an S3 bucket and available at/_static(same-origin).