Commit Graph

194 Commits

Author SHA1 Message Date
will.anderson 23fc64e7b7 fix(neuron-prod): set neuron-marketing-hpa minReplicas to 1 (#8) 2026-05-04 21:21:16 +00:00
will.anderson a64860064b fix(neuron-prod): add allow-dharma-ingress NetworkPolicy (#6) 2026-05-04 21:16:01 +00:00
will.anderson be0508037a fix(dharma): drop letsencrypt certResolver from IngressRoute 2026-05-04 20:56:29 +00:00
Will Anderson 84688aec9d restore Always pull policy for engram-server: registry image now works
The registry image now compiles with -rdynamic/-ldl so dlsym can find
handle_request at runtime. IfNotPresent workaround no longer needed.
2026-05-04 11:43:52 -05:00
Will Anderson 10c3af4afe fix engram-server: use IfNotPresent pull policy to use local k3s cache
The buildah-compiled image (imported directly into k3s) is the working
version. The registry image will catch up after the next CI build.
IfNotPresent ensures the locally-cached correct binary is used.
2026-05-04 11:42:10 -05:00
Will Anderson 283e335e0a deploy engram-server to neuron-prod: dharma storage backend
- Add engram-server Deployment, Service, PVC to neuron-prod
- engram-server is the graph memory substrate for DHARMA registry
- Add allow-engram-ingress NetworkPolicy (ingress from neuron-prod)
- ENGRAM_URL in Vault updated to http://engram-server.neuron-prod.svc.cluster.local:8742
- Image: registry.neuralplatform.ai/neuron-technologies/engram-server:latest
  compiled from foundation/engram dist/engram.c + el_runtime
2026-05-04 11:28:45 -05:00
Will Anderson f2f20c1f2c remove missing soma manifests from prod kustomization
Soma moved to GCP Cloud Run. The soma-*.yaml files were deleted but
the kustomization still referenced them, blocking all Argo CD syncs
for neuron-prod (including the new allow-daemon-ingress NetworkPolicy).
2026-05-04 11:11:18 -05:00
Will Anderson c7da8ca727 fix dharma startup: allow neuron-daemon ingress from neuron-prod namespace
The default-deny-all NetworkPolicy was blocking dharma from reaching
neuron-daemon port 7750 (event queue / engram endpoint). Add an explicit
ingress policy for neuron-daemon that allows traffic from the neuron-prod
namespace, so dharma and other internal services can connect at startup.
2026-05-04 10:49:55 -05:00
Will Anderson d0a6ca753c expose engram port 7750 on neuron-daemon service 2026-05-03 13:32:35 -05:00
Will Anderson b70fef611a deploy DHARMA registry to neuron-prod
- Dockerfile for Go DHARMA server (registry.neuralplatform.ai/neuron-technologies/dharma)
- k8s manifests: deployment, service, ExternalSecret (Vault), IngressRoute
- Argo CD app: deploys to neuron-prod namespace
- Cloudflare tunnel rule for dharma.neurontechnologies.ai
- DNS CNAME record for dharma.neurontechnologies.ai → legion tunnel
- Vault secrets already populated (api_key, encryption_key, jwt_secret, engram_key, engram_url)
- Connects to neuron-daemon (engram) at neuron-daemon.neuron-prod.svc.cluster.local:7749
2026-05-03 13:26:54 -05:00
Will Anderson 73004fa287 neuron-web: drop unused registry-pull-secret
The registry currently allows anonymous cluster-internal pulls so the
imagePullSecrets reference was failing the externalsecret reconcile
(secret/data/mudcraft has no registry creds for this app). Pod was
pulling fine anyway. If the registry later gets locked down, add a
proper externalsecret using the path from secret/data/<app> instead of
borrowing mudcraft's.
2026-05-03 10:49:24 -05:00
Will Anderson 3daf615dd2 add neuron-web phase-1 deploy on Legion
Stand up the elb-built native El landing server on Legion k3s alongside
the existing Cloud Run prod marketing site. Image is built on
gitea-runner-1 from elb-emitted .c files + native cc and pushed to
registry.neuralplatform.ai/neuron-web:dev-dfe41234. Deployment exposes
web-stage.neuralplatform.ai via Traefik + Cloudflare tunnel.

The point is to have a working local instance we can iterate against
while we redesign the CI/CD pipeline; nothing here replaces the Cloud
Run deploy yet.

* k8s/neuron-technologies/web/ — namespace, deployment, service, ingress,
  registry-pull-secret + externalsecret pulling anthropic/supabase keys
  from Vault
* apps/neuron-web.yaml — Argo CD Application
* dns-neuralplatform.tf, main.tf — CNAME + tunnel ingress for
  web-stage.neuralplatform.ai
2026-05-03 10:45:18 -05:00
Will Anderson 961dad90c0 Set neuron-marketing HPA minReplicas to 0 — site down 2026-04-28 18:57:09 -05:00
Will Anderson a823b0c1d3 Scale neuron-marketing to 0 — taking site down 2026-04-28 18:55:39 -05:00
Will Anderson e69ecd2240 Scale neuron-marketing to 1 replica for demo launch 2026-04-28 18:52:21 -05:00
Will Anderson 4943ccfc74 Add NEURON_API_KEY to neuron-dev secrets and fix OTLP endpoint
- ExternalSecret: pull neuron_api_key from Vault into NEURON_API_KEY
- ConfigMap: set OTEL_EXPORTER_OTLP_ENDPOINT to alloy-otlp in-cluster service
  instead of localhost (fixes 196 restart OTel connection errors)
2026-04-28 15:17:16 -05:00
Will Anderson 1a8e039ecf Rename inference endpoint to neuron.neurontechnologies.ai, add wildcard DNS for customer orgs 2026-04-28 11:15:11 -05:00
Will Anderson f2b025a433 Deploy soma to GCP Cloud Run at ai.neurontechnologies.ai
- Add cloud-run-soma.tf: soma-prod-us Cloud Run service in us-central1,
  neuron-soma-sa service account, soma Artifact Registry repo, Secret
  Manager secrets for HF token and operator key, serverless NEG, backend
  service, SSL cert
- Add dns-gcp.tf: Cloudflare A record for ai.neurontechnologies.ai pointing
  to GCP LB IP; Cloudflare provider added to main.tf/variables.tf
- Update load-balancer.tf: soma host rule + path matcher, soma SSL cert
  added to HTTPS proxy
- Update outputs.tf: soma service URL and artifact registry URL outputs
- Remove legion soma k8s manifests (Legion is gone)
- Update AGENTS.md to reflect GCP as primary production environment
2026-04-28 10:15:15 -05:00
Will Anderson 65dd9884ae Fix soma model ID: NeuronTechnologiesAI/Neuron (correct HF org casing) 2026-04-28 09:35:37 -05:00
Will Anderson 88d7799911 deploy soma inference gateway with neuron model on ai.neurontechnologies.ai 2026-04-28 09:31:46 -05:00
Will Anderson fb5b93f9d7 fix broken pods in GCP k3s cluster
- neuron-dev: update neuron-rest and neuron-mcp from dev-d7a587e2 to v0.18.14
- neuron-stage: update neuron-rest/mcp from stage-0f5b2328 to v0.18.14; marketing from :latest to 1e94e8ae
- swarm-alpha/beta/gamma: update neuron-rest and neuron-mcp from v0.15.3 to v0.18.14
- ci runners: fix docker socket path from /var/run/docker.sock to /run/k3s/containerd/containerd.sock (k3s node has no Docker daemon)
2026-04-27 18:17:32 -05:00
Will Anderson aee77bbfc0 Bump secret-hash annotation to force MCP pod restart
The NEURON_API_KEY secret was updated in Vault to the real ntn_ key;
bumping this annotation triggers a rolling restart so pods pick up
the new value.
2026-04-27 18:05:47 -05:00
Will Anderson 409a04ce80 Route neurontechnologies.ai/mcp to neuron-mcp:8080
Expose the MCP endpoint directly at the root domain so Bearer token
clients can reach it without going through the OAuth subdomain.
The Spring Boot MCP layer already accepts ntn_* API keys via
ApiKeyAuthenticationFilter; this ingress rule enables access via
https://neurontechnologies.ai/mcp.
2026-04-27 18:05:04 -05:00
Will Anderson 20a4a2c37f Take marketing site offline until launch 2026-04-27 17:58:33 -05:00
Will Anderson dda07ae269 Route /oauth2, /connect, /.well-known at neurontechnologies.ai to MCP 2026-04-27 17:51:59 -05:00
Will Anderson 03495962e0 fix(daemon): use neuron-rest cluster service instead of local JVM (--jar was circular proxy) 2026-04-27 17:26:58 -05:00
Will Anderson 3943ebc204 feat: scale marketing to 1 replica, add notification + turnstile secrets
Single replica required for in-memory pending leads Map used by SMS
double-opt-in flow. ExternalSecret adds Resend, Twilio, and Turnstile
keys to the marketing pod environment.
2026-04-27 03:31:45 -05:00
will.anderson b2940c70e0 fix(swarm): add runAsUser: 1001 to all swarm containers (#44) 2026-04-27 05:13:50 +00:00
Neuron CI e9da888512 ci(neuron-prod): update rest+license to v0.18.14 2026-04-26 17:26:16 +00:00
Neuron CI cdadd723b6 ci(neuron-prod): blue-green flip to blue@v0.18.14 (registry.neuralplatform.ai/neuron-technologies/neuron-mcp:v0.18.14) 2026-04-26 17:26:05 +00:00
Neuron CI 41f94d93be ci(daemon): deploy main neuron-daemon@0f5dbd6a 2026-04-26 17:02:49 +00:00
Neuron CI 9d7bc48ed0 ci(daemon): deploy main neuron-daemon@10cd48e0 2026-04-26 16:55:20 +00:00
Neuron CI 15482b9241 ci(neuron-prod): update rest+license to v0.18.8 2026-04-26 16:49:46 +00:00
Neuron CI bd7d5efa66 ci(neuron-prod): blue-green flip to green@v0.18.8 (registry.neuralplatform.ai/neuron-technologies/neuron-mcp:v0.18.8) 2026-04-26 16:49:02 +00:00
Neuron CI 726510d7d9 ci(daemon): deploy main neuron-daemon@5dc2d833 2026-04-26 16:34:07 +00:00
will.anderson 66bffc5a4b Merge pull request 'fix(rest): run as UID 1000 to match PVC file ownership' (#35) from feat/daemon-image-c190e6e5 into main 2026-04-26 16:07:02 +00:00
Will Anderson c6245d1170 fix(rest): run as UID 1000 to match PVC file ownership — SQLite needs write access 2026-04-26 11:06:23 -05:00
will.anderson f056806cbd Merge pull request 'fix(rest): Recreate strategy to avoid SQLite write lock on rollout' (#34) from feat/daemon-image-c190e6e5 into main 2026-04-26 16:05:24 +00:00
Will Anderson 58513835e2 fix(rest): use Recreate strategy to avoid SQLite write lock on rollout 2026-04-26 11:04:16 -05:00
Neuron CI f525437c77 ci(daemon): deploy main neuron-daemon@b2bed846 2026-04-26 16:03:29 +00:00
Will Anderson baf147543c ci(daemon): deploy main neuron-daemon@c190e6e5 2026-04-26 10:37:29 -05:00
Will Anderson 714a7c7a8d launch: deploy daemon StatefulSet, fix neuron-rest security context, add daemon Argo CD app
- Add neuron-daemon Argo CD Application (apps/neuron-daemon.yaml) pointing to
  k8s/neuron-technologies/daemon/ on main — daemon will deploy once image is built
- Add daemon k8s manifests: StatefulSet (2 replicas, imagePullPolicy: Always),
  Service (ClusterIP :7749, session affinity), ExternalSecret (Anthropic API key from Vault)
- Fix neuron-rest runAsNonRoot: remove constraint since v0.15.3 image runs as root,
  clears the CreateContainerConfigError on the 11h-old stale pod
- Add NEURON_DAEMON_WS_URL env var to marketing deployment for chat UI connectivity
- Add neuron.neurontechnologies.ai Cloudflare DNS record and tunnel ingress rule (Terraform)
2026-04-26 10:13:48 -05:00
Will Anderson 655ab38558 Deploy neuron-mcp:a837369 — VBD marketplace architecture 2026-04-26 08:51:07 -05:00
Will Anderson 6041ac3b25 Deploy neuron-mcp:514db58 — STATELESS, built from current main 2026-04-26 08:33:03 -05:00
Will Anderson 623a6828e8 Deploy neuron-mcp:05d978f — STATELESS from main branch 2026-04-26 08:24:55 -05:00
Will Anderson d804d71040 Remove sticky session from MCP IngressRoute — STATELESS is sessionless 2026-04-26 08:21:16 -05:00
Will Anderson 5f1c9adaa6 Deploy neuron-mcp:1b26e3e — STATELESS HTTP transport
Removes STREAMABLE session state. No sticky sessions needed.
Works across all pods, survives restarts, scales cleanly.
2026-04-26 08:18:07 -05:00
Will Anderson 08ef13c40d Add sticky session affinity to MCP IngressRoute
STREAMABLE transport holds session state in-memory per-pod. With HPA
scaling to 2+ replicas and round-robin routing, requests hit different
pods and fail with "Session not found". Pin each client to one pod via
a secure HttpOnly cookie.
2026-04-26 08:07:23 -05:00
Will Anderson 20397e9831 Restore neuron-mcp:97bd19ba (rollback to v0.15.3 was incompatible) 2026-04-26 04:28:19 -05:00
Will Anderson 5fa8cf45d5 Rollback neuron-mcp to v0.15.3 to restore MCP connectivity 2026-04-26 04:20:57 -05:00