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 committedRun Agoraform from that directory:
agoraform validateagoraform planagoraform applyagoraform planOr select a manifest from elsewhere:
agoraform plan -f campaign/agoraform.yamlAgoraform then loads campaign/.agoraform.env and campaign/agoraform.state.json.
agoraform.yaml
Section titled “agoraform.yaml”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.
.agoraform.env
Section titled “.agoraform.env”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.
# MatomoMATOMO_URL=https://matomo.example.comMATOMO_TOKEN_AUTH=replace-with-tokenMATOMO_SITE_ID=1MATOMO_CONTAINER_ID=replace-with-container-id
# Google AdsGOOGLE_ADS_DEVELOPER_TOKEN=replace-with-developer-tokenGOOGLE_ADS_CLIENT_ID=replace-with-client-idGOOGLE_ADS_CLIENT_SECRET=replace-with-client-secretGOOGLE_ADS_REFRESH_TOKEN=replace-with-refresh-tokenGOOGLE_ADS_CUSTOMER_ID=1234567890# GOOGLE_ADS_LOGIN_CUSTOMER_ID=0987654321Blank 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.
agoraform.state.json
Section titled “agoraform.state.json”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.