Commit Graph

567 Commits

Author SHA1 Message Date
Will Anderson 8b7dea5b50 switch neuron-prod Stripe secrets to live marketing keys 2026-04-25 02:01:41 -05:00
Will Anderson 9b41d2302c feat(secrets): add STRIPE_WEBHOOK_SECRET to neuron-prod ExternalSecret 2026-04-25 01:50:51 -05:00
Neuron CI f831da7f17 ci(neuron-prod): deploy neuron@v0.13.1 2026-04-25 06:44:48 +00:00
Will Anderson b0d4e9c6ec fix(runpod): set LB replicas=0 until RunPod pods are provisioned 2026-04-25 01:36:04 -05:00
Neuron CI 11e9962431 ci(neuron-prod): deploy neuron@v0.12.2 2026-04-25 06:25:49 +00:00
Will Anderson a6421a5f98 feat(api): expose api.neurontechnologies.ai + add Stripe and R2 secrets
- Add api.neurontechnologies.ai DNS CNAME → CF tunnel
- Add tunnel ingress rule for api.neurontechnologies.ai → Traefik
- Create rest-ingressroute.yaml: api.neurontechnologies.ai → neuron-rest:8081
- Add STRIPE_SECRET_KEY to neuron-prod ExternalSecret (from marketing-test Vault)
2026-04-25 01:25:39 -05:00
Will Anderson 8eb88a3116 feat(runpod): add inference pod templates, nginx LB, and provisioner script
Infrastructure readiness for RunPod inference workloads:
- runpod-inference.yaml: ConfigMap with pod creation payloads for RTX 4090,
  A40 (single+dual), and custom templates
- runpod-lb-configmap.yaml: nginx least-conn load balancer for inference
  endpoint distribution (Deployment + ClusterIP Service)
- runpod-provision.sh: bash provisioner script — reads RUNPOD_API_KEY/HF_TOKEN,
  creates pods via GraphQL, polls until RUNNING, outputs endpoint URLs.
  Does NOT spin up any pods (dry-run flag available).
2026-04-25 01:20:55 -05:00
Will Anderson c847b22014 fix(secrets): add R2 credentials to neuron-prod ExternalSecret
License service references NEURON_R2_ENDPOINT/ACCESS_KEY/SECRET_KEY
but these were missing from neuron-prod-secrets. Pull from secret/r2
in Vault.
2026-04-25 01:20:38 -05:00
Neuron CI c76eb09aa5 ci(neuron-prod): deploy neuron@v0.12.1 2026-04-25 06:11:44 +00:00
Neuron CI 5ff525e1c8 ci(neuron-prod): deploy neuron@v0.12.0 2026-04-25 05:50:26 +00:00
Neuron CI ec66233644 ci(neuron-prod): deploy neuron@v0.11.1 2026-04-25 05:33:25 +00:00
Neuron CI abf3453d8d ci(neuron-prod): deploy neuron@v0.10.0 2026-04-25 04:53:36 +00:00
Will Anderson 1a9dd13b0a Fix neuron-mcp OTLP endpoint: alloy → alloy-otlp service
The `alloy` ClusterIP service only exposes port 12345 (UI/metrics).
OTLP HTTP ingestion on port 4318 is on the separate `alloy-otlp` service.
Pointing OTEL_EXPORTER_OTLP_ENDPOINT at `alloy:4318` caused continuous
SocketTimeoutException in neuron-mcp. Updated both blue and green deployments.
2026-04-24 23:36:48 -05:00
Neuron CI c9ffa55863 ci(neuron-prod): deploy neuron@v0.9.1 2026-04-25 03:35:33 +00:00
Will Anderson 1d527a9365 chore(neuron-prod): add green deployment to kustomization
Green manifest was committed but missing from kustomization.yaml so Argo CD
never created the resource. Wires it in so the blue/green slot swap can work.
2026-04-24 22:22:20 -05:00
Neuron CI 67de9ac463 ci(neuron-prod): deploy neuron@v0.9.0 2026-04-25 03:17:56 +00:00
Will Anderson f86ee04467 fix(neuron-mcp): blue/green deployment, memory limits, preStop drain hook
- Rename Deployment to neuron-mcp-blue with slot=blue label
- Add neuron-mcp-green Deployment scaffold (replicas=0, ready to receive new image)
- Service selector now routes by slot label; annotation tracks active slot
- Memory: 768Mi → 1536Mi limit, 256Mi → 512Mi request (fixes OOM pod restarts / 502s)
- Add JAVA_TOOL_OPTIONS: container-aware GC + ExitOnOutOfMemoryError
- Add preStop sleep 8s so Traefik drains in-flight connections before pod terminates
- terminationGracePeriodSeconds: 30
- Add scripts/blue-green-deploy.sh: automated slot-swap with health check and rollback
2026-04-24 22:08:12 -05:00
Will Anderson 5d4cc17829 chore(neuron): retire Python backend — keep cloudflared only
Remove neuron/neuron-alpha/neuron-beta/neuron-gamma Deployments and
Services, the slot LB service, Python ingress, slot PVCs, snapshot job,
neuron-config ConfigMap, and neuron-secrets ExternalSecret. The Python
MCP backend has been superseded by the Spring Boot backend in neuron-prod.

Cloudflared Deployment and cloudflared-secret ExternalSecret are
retained in the neuron namespace. The neuron-data PVC is preserved
for data safety.
2026-04-24 20:39:17 -05:00
Neuron CI b411f2a7b0 ci(neuron-prod): deploy neuron@v0.8.3 2026-04-25 01:35:26 +00:00
Neuron CI 719c66ea82 ci(neuron-prod): deploy neuron@v0.8.2 2026-04-25 01:13:52 +00:00
Will Anderson 91bfc42989 ops: scale down all non-critical services — dedicate resources to Neuron
Scaled to replicas: 0: fornax (coordinator/ui/workers), jellyfin via media,
overseerr, plex, radarr, sonarr, bazarr, prowlarr, flaresolverr, ollama,
harmonic-wordpress, docuseal, listmonk, memos, plane, redpanda, wp-coordinator
2026-04-24 20:07:41 -05:00
Neuron CI 6160e8e6b8 ci(neuron-prod): deploy neuron@v0.8.1 2026-04-25 00:57:54 +00:00
Neuron CI af8a178b8c ci(neuron-prod): deploy neuron@v0.8.0 2026-04-25 00:36:02 +00:00
Neuron CI cc489e4047 ci(neuron-prod): deploy neuron@v0.7.7 2026-04-25 00:22:52 +00:00
Will Anderson 0e590df537 fix(neuron-prod): reduce mcp memory request to unblock scheduling 2026-04-24 18:27:18 -05:00
Neuron CI 851e64a561 ci(neuron-prod): deploy neuron@v0.7.6 2026-04-24 23:22:38 +00:00
Neuron CI cf6f390756 ci(neuron-prod): deploy neuron@v0.7.5 2026-04-24 22:26:03 +00:00
Neuron CI 2befcc088a ci(neuron-prod): deploy neuron@v0.7.4 2026-04-24 22:07:54 +00:00
Neuron CI b36de8190e ci(neuron-prod): deploy neuron@v0.7.3 2026-04-24 21:59:07 +00:00
Neuron CI 060995e762 ci(neuron-prod): deploy neuron@v0.7.2 2026-04-24 21:26:01 +00:00
Neuron CI 2a0011c479 ci(neuron-prod): deploy neuron@v0.7.1 2026-04-24 20:57:42 +00:00
Will Anderson 1e5a02f5d0 debug: add Spring Security DEBUG logging to license service 2026-04-24 15:42:09 -05:00
Neuron CI 1ba33ef201 ci(neuron-stage): deploy neuron@stage-0f5b2328 2026-04-24 20:21:11 +00:00
Will Anderson 90bde78d7a feat(marketing): add NEURON_LICENSE_ADMIN_TOKEN to ExternalSecret 2026-04-24 15:19:15 -05:00
Will Anderson fe17d020ef fix(k8s): use Recreate strategy for neuron-mcp deployments
Single-node k3s cluster cannot schedule a second pod during rolling update
(512Mi request × 2 exceeds available memory). Recreate terminates the old
pod before starting the new one, trading brief downtime for schedulability.
2026-04-24 15:19:10 -05:00
Will Anderson 95b4669839 feat(neuron-prod): add IngressRoute for license API at /api/v1/* paths 2026-04-24 15:12:37 -05:00
Will Anderson c238fbb198 fix(marketing): point license API URL to neuron-license service on correct port 8082 2026-04-24 15:10:08 -05:00
Will Anderson d9257ab1b7 feat(marketing): expose Team and Enterprise Stripe price IDs via ExternalSecret 2026-04-24 14:34:59 -05:00
Will Anderson 02db9c3d43 feat(observability): wire OpenTelemetry into MCP backend and marketing site
- Add OTEL_EXPORTER_OTLP_ENDPOINT env var to prod and stage MCP deployments pointing at Alloy in-cluster
- Add Neuron Platform Overview Grafana dashboard (request rate, latency percentiles, error rate, memory nodes, HTTP status distribution)
- Allow grafana/dashboards/*.json through .gitignore (was blocked by secrets rule)
2026-04-24 14:21:34 -05:00
Will Anderson 2d98df75ad Deploy Plane project management to k8s with Cloudflare Access gate
Adds all k8s manifests (namespace, postgres, redis, api, worker, beat,
web, ingress, externalsecret, configmap, kustomization), Argo CD Application,
and Cloudflare Zero Trust access policy for plane.neuralplatform.ai.
2026-04-24 14:21:02 -05:00
Will Anderson e901b9a541 Add staging marketing site and Cloudflare Access gate
- Deploy marketing site to neuron-stage namespace (replaces bare REST catch-all)
- Staging uses test-mode Stripe keys from Vault
- Updated stage ingress to match prod routing pattern (MCP paths + marketing at /)
- Cloudflare Access: stage.neurontechnologies.ai requires Google auth
  - @neurontechnologies.ai domain allowed
  - 1timlingo@gmail.com explicitly allowed
2026-04-24 13:43:12 -05:00
Neuron CI 477af9b673 ci(neuron-prod): deploy neuron@v0.7.0 2026-04-24 18:32:40 +00:00
Neuron CI b187805e63 ci(neuron-stage): deploy neuron@stage-6d08a241 2026-04-24 18:23:50 +00:00
Will Anderson 0bb18cedac Route /connect to neuron-mcp for OAuth dynamic client registration 2026-04-24 13:16:36 -05:00
Will Anderson 0f9448e8ea deploy neuron marketing site to neurontechnologies.ai
Add marketing/ manifests (Deployment, Service, ExternalSecret) for the
Next.js marketing site in neuron-prod namespace, an Argo CD app pointing
to the new path, and update the prod ingress to serve / from neuron-marketing
instead of neuron-rest.
2026-04-24 13:09:29 -05:00
Will Anderson ebe4789935 Route /.well-known, /oauth2, /login, /sse, /message to neuron-mcp
OAuth discovery endpoints (/.well-known/oauth-protected-resource and
/.well-known/oauth-authorization-server) and the authorization server
paths (/oauth2/*, /login) were routing to neuron-rest, which has none
of those endpoints. MCP also uses /sse and /message directly.

All five path prefixes now route to neuron-mcp on port 8080.
2026-04-24 13:00:56 -05:00
Will Anderson 336a9333a2 prepare neuron-tim namespace for Tim's future Neuron instance
Adds the neuron-tim namespace (via Terraform) and a full Argo CD
app + k8s manifests mirroring neuron-prod. All deployments set to
replicas=0 — nothing runs until Tim's imprint is ready and Vault
secrets are populated at secret/neuron-technologies/tim.
2026-04-24 12:52:36 -05:00
Will Anderson 92743b1efc add redpanda to legion cluster
Deploy single-broker Redpanda in dedicated namespace with 20Gi storage,
1 CPU / 2Gi memory limits, and a one-shot topic init job for neuron.swarm,
neuron.ci, neuron.vcs, and neuron.webhooks with appropriate retention.
2026-04-24 12:39:02 -05:00
Neuron CI befbc006be ci(neuron-prod): deploy neuron@v0.6.1 2026-04-24 17:35:59 +00:00
Neuron CI 91e7607c28 ci(neuron-stage): deploy neuron@stage-fa185003 2026-04-24 17:31:16 +00:00