Files
infrastructure/Agents.md

6.0 KiB

Agent System Reference

Quick reference for AI agents working in Will's infrastructure. Read this before doing any infrastructure work.


Machines

Machine Role
Local Mac Dev workstation (primary)

Legion is gone. All production services now run on GCP.


Production Environment — GCP

All production services run on Google Cloud Platform, project neuron-785695.

Service URL Platform
Marketing site https://neurontechnologies.ai Cloud Run (3 regions)
Accounts https://accounts.neurontechnologies.ai Cloud Run (3 regions)
REST API https://api.neurontechnologies.ai Cloud Run (3 regions)
Soma (AI inference gateway) https://ai.neurontechnologies.ai Cloud Run (us-central1)

Artifact Registry

Images are pushed to us-central1-docker.pkg.dev/neuron-785695/:

Service Registry path
Marketing neuron-marketing/marketing
Accounts neuron-accounts/accounts
API neuron-api/api
Soma neuron-soma/soma

GCP CLI

gcloud auth login
gcloud config set project neuron-785695
gcloud auth configure-docker us-central1-docker.pkg.dev --quiet

Secrets — GCP Secret Manager

GCP Secret Manager is the source of truth for all production secrets.

Access via gcloud CLI

gcloud secrets versions access latest --secret=<secret-name>

Secrets in use

Secret name Purpose
jwt-secret JWT signing key (accounts, api)
license-admin-token License admin token (api)
accounts-database-url Cloud SQL connection string (accounts)
soma-hf-token HuggingFace API token (soma)
soma-operator-key Soma operator/service key (soma)
stripe-secret-key Stripe API key
stripe-webhook-secret Stripe webhook signing secret
stripe-price-professional Stripe Professional plan price ID
stripe-price-founding Stripe Founding Member price ID

How secrets flow to Cloud Run

Secrets are injected as environment variables via Secret Manager references in Terraform Cloud Run service definitions. No ESO, no Vault.

GCP Secret Manager → Terraform secret_key_ref → Cloud Run env var → pod env

Infrastructure Management

The split: Terraform vs Cloud Run

Layer Tool What it owns
Infrastructure Terraform Cloud Run services, Artifact Registry, Secret Manager secrets, Load balancer, SSL certs, Cloudflare DNS, Cloud SQL, IAM
Secrets Secret Manager All production secrets — referenced in Terraform, never hardcoded

Never deploy Cloud Run changes with gcloud run deploy directly. All changes go through Terraform.

Running Terraform (GCP)

cd ~/Development/infrastructure/servers/gcp/
# direnv auto-loads credentials if configured, or:
export GOOGLE_APPLICATION_CREDENTIALS=~/.config/gcloud/application_default_credentials.json
terraform plan
terraform apply

State is stored in Cloudflare R2 bucket legion-terraform-state (key: gcp/terraform.tfstate).

Repo layout

~/Development/
  infrastructure/                      ← this repo
    AGENTS.md                          ← you are here
    servers/
      gcp/
        *.tf                           ← Terraform (all GCP infra)
  neuron-technologies/
    soma/                              ← Soma AI inference gateway (Rust)
    neuron-rest/                       ← REST API (Go)
    accounts/                          ← Accounts service (Go)
    marketing/                         ← Marketing site (Next.js)

CI/CD

Gitea Actions (neuralplatform.ai was on Legion — now gone)

Gitea is gone with Legion. Use GitHub Actions for CI/CD.

  • Workflows: .github/workflows/
  • Push images to GCP Artifact Registry from CI using the neuron-ci-pusher service account
  • CI SA key stored as GCP_SA_KEY repo secret (JSON key from neuron-ci-pusher@neuron-785695.iam.gserviceaccount.com)

Docker push pattern

gcloud auth configure-docker us-central1-docker.pkg.dev --quiet
docker buildx build --platform linux/amd64 \
  -t us-central1-docker.pkg.dev/neuron-785695/<repo>/<service>:latest \
  --push .

Services & Domains

Domain Backend Notes
neurontechnologies.ai GCP LB → Cloud Run Marketing site, 3 regions
www.neurontechnologies.ai GCP LB → Cloud Run Marketing site alias
api.neurontechnologies.ai GCP LB → Cloud Run REST API, 3 regions
accounts.neurontechnologies.ai GCP LB → Cloud Run Accounts service, 3 regions
ai.neurontechnologies.ai GCP LB → Cloud Run Soma inference gateway, us-central1

All domains share one global anycast IP (marketing-ip-prod). DNS A records in Cloudflare point to that IP.


Load Balancer

  • Global external HTTPS load balancer (marketing-urlmap-prod)
  • Single IP (google_compute_global_address.prod)
  • Host-based routing via URL map
  • SSL certs: Google-managed, auto-renewed
  • Cloud Armor: SQLi/XSS protection + rate limiting (1000 req/min per IP)
  • CDN enabled for marketing site only

Terraform Cloudflare DNS

Cloudflare DNS A records for neurontechnologies.ai subdomains are managed in the GCP Terraform (servers/gcp/). The Cloudflare provider is configured via environment variable CLOUDFLARE_API_TOKEN.

Zone ID for neurontechnologies.ai: e844374f203dca4944d77d40ca0710ae


Key Paths

What Where
This repo ~/Development/infrastructure/
GCP Terraform ~/Development/infrastructure/servers/gcp/
Soma (inference gateway) ~/Development/neuron-technologies/soma/
GCP credentials ~/.config/gcloud/
Secrets/tokens ~/Secrets/

What NOT To Do

  • gcloud run deploy directly — use Terraform
  • Hardcode any secret value — store in GCP Secret Manager
  • Commit terraform.tfstate — state is in R2, never local
  • Add kubernetes_* resources to Terraform — there is no k8s cluster anymore