Skip to content

Project Structure

A typical v0.3.0 project looks like:

campaign/
├── agoraform.yaml # committed desired state
├── .agoraform.env # local credentials; do not commit
└── agoraform.state.json # local identity map; usually not committed

Run Agoraform from that directory:

Terminal window
agoraform validate
agoraform plan
agoraform apply
agoraform plan

Or select a manifest from elsewhere:

Terminal window
agoraform plan -f campaign/agoraform.yaml

Agoraform then loads campaign/.agoraform.env and campaign/agoraform.state.json.

This is the version-controlled declaration of marketing resources. The schema is apiVersion: agoraform.io/v1alpha1. Credentials never belong in this file.

See the manifest reference.

v0.3.0 can auto-load an optional dotenv file next to the selected manifest. If the file is absent, existing environment-variable behavior is unchanged.

Process environment variables always win over .agoraform.env.

# Matomo
MATOMO_URL=https://matomo.example.com
MATOMO_TOKEN_AUTH=replace-with-token
MATOMO_SITE_ID=1
MATOMO_CONTAINER_ID=replace-with-container-id
# Google Ads
GOOGLE_ADS_DEVELOPER_TOKEN=replace-with-developer-token
GOOGLE_ADS_CLIENT_ID=replace-with-client-id
GOOGLE_ADS_CLIENT_SECRET=replace-with-client-secret
GOOGLE_ADS_REFRESH_TOKEN=replace-with-refresh-token
GOOGLE_ADS_CUSTOMER_ID=1234567890
# GOOGLE_ADS_LOGIN_CUSTOMER_ID=0987654321

Blank lines and lines beginning with # are ignored. Single- and double-quoted values are supported. export KEY=VALUE is also accepted.

The Agoraform source repository ignores .agoraform.env. If you use Agoraform from another Git repository, add that filename to that project’s .gitignore. Do not force-add the file to Git.

A tagged template is available at .agoraform.env.example.

Local identity state maps logical resource addresses to provider-native remote IDs. It lives next to the manifest. A missing file is empty state, not an error.

State never contains credentials. It is machine-local management metadata and should not normally be committed. The public repository ignores agoraform.state.json.

See lifecycle for how plan, apply, and import use this file.