The Gradial ACI (Agentic Content Infrastructure) CLI connects local frontend work to the same content and release workflow used by the hosted product. Use it to scaffold projects, compile and validate content, work on branches, promote approved paths, and manage releases.

Run the CLI

ACI starters install the aci binary through @gradial/aci. Check the project-local version with:
The examples below use aci for readability. From a project where the binary is not already on your shell path, prefix a command with npm exec --:
Use the starter’s package scripts for routine local work. They keep the command and SDK version aligned:

Command map

Run aci <command> --help for the flags available in your installed SDK.

Global options

Hosted commands use your organization’s ACI API URL and access token. Set them in the environment to avoid placing credentials in shell history:
Your Gradial team provides the correct API URL and access method for each environment. Do not commit tokens to the repository.

Create a project

aci init

Create an Astro site with sample content:
Create a Next.js site without sample pages or components:
List the templates provided by the installed package:
Astro is the standard starter for a new site. --with-starter-content adds sample content, components, assets, and stories; without it, the project starts with empty registries and the required integration structure.

Develop locally

aci dev

Compile local content, watch it for changes, and run the configured framework development server:
Override the framework’s development port when needed:
The generated npm run dev script is the usual entrypoint for a starter project.

Work with content

aci content compile

Compile authored content into the generated local output:
If you run the command from the site root, the CLI can discover these paths from the project configuration:

aci content validate

Validate content structure and, when run inside a configured site, component prop schemas:
Use an explicit source directory outside a configured project:
Running from the site root performs the most complete check because the CLI can load the component and layout contracts.

aci validate

Validate the coherence of the complete content snapshot for the configured site. Every content document is parsed and checked against the project’s contracts, and referenced assets are resolved:
The command exits non-zero when errors are found, which makes it suitable for CI gates. Use --format json for machine-readable output.

aci content pull

Pull a branch’s content into the local content directory:
Pull replaces the local runtime content tree with the selected remote branch. Commit, stash, or otherwise preserve local edits before you run it.

aci content diff

Compare local content with a remote branch before pushing:

aci content push

Preview the changes that would be sent to a content branch:
After reviewing the plan, push the changes:
Use --files for a targeted initial seed or update. Repeat the option as needed and review a dry run first:

Work with branches

ACI branches isolate content and its linked code while work is in progress. Landing a reviewed branch updates main, the approved content trunk. It does not put the change live.

Inspect and create branches

Rebase and land

Read the branch and target state first, then pass the observed heads when you rebase or land. These checks prevent an update from silently overwriting newer work.

Other branch operations

For normal local authoring, content pull, file edits, content diff, and content push provide the clearest workflow. Use changes and patch for structured integrations that already manage branch concurrency.

Build code for a branch

aci code-build

Build the current Git state and link the resulting code to a non-main content branch:
Run this after a component, contract, layout, or other frontend code change that the branch needs for preview. The source repository must already be connected and accessible to your ACI environment. For a site inside a monorepo, use --folder if the CLI cannot infer the site directory:

Promote approved content

Landing and publishing are separate operations:

aci drift

List paths whose approved state on main differs from their published state on live:
Use this before a promotion to see what is approved but not yet live.

aci promote

Preview a path-scoped promotion:
Promote one or more paths after reviewing the plan:
The CLI always evaluates the plan first. It reports conflicts and warns when the selected files were approved together with paths you did not select. --yes is required to apply the promotion.

Stage and activate releases

Promotion updates the publishable content state. Release commands build that state into an immutable release, give you a preview to review, and then make the approved release live.

aci release publish

Stage a release:
The command returns the new release ID and preview URL. It also reports the currently active release and its generation; keep those values for activation. Pass --activate to stage and activate in one step. Keep the steps separate when the release needs review at its preview URL before activation.

aci release status

Check a staged release:

aci release activate

After reviewing the preview, activate the staged release with the active state returned by release publish:
On the first activation, the returned current release may be empty. Pass the value exactly as returned, including --expected-release "" when it is empty.

aci release rollback

Switch the whole site back to a previous release:
The expected release and generation protect both activation and rollback from racing with another release change. Refresh the active state and retry if either value is stale.
Use aci promote with an older source when you need to roll back selected content paths. Use aci release rollback when you need to switch the complete site to an earlier release.

Manage asset binaries

The dam commands move asset binaries. Asset metadata remains part of the content tree and follows the normal branch workflow.
Use aci dam <command> --help to inspect the file and asset arguments supported by your installed CLI.

Local frontend change

Content branch

Approved change to production


Next: Agent-ready projects →