Neon Law
  • Fractional CTO
  • Litigation
  • Fractional GC
  • Legal Services
  • Sign in
← Operating Neon Law Navigator

Environment Matrix

Chapter 4 of 7 · Section 27 of 44

Sections

1. Intro

  • 1. Deploy your own
  • 2. Agenda

2. Prepare Google Cloud

  • 3. Bring your own project
  • 4. Dry-run first
  • 5. Private assets and domain restricted sharing
  • 6. The one project that is public on purpose
  • 7. The Navigator deployment matrix
  • 8. The `/app` mount and HTTP route ownership
  • 9. `neon` — the whole brand seam
  • 10. Live rollout checkpoint
  • 11. Set one site to one version

3. Provision the Infrastructure

  • 12. The APIs that light up
  • 13. Network and five buckets
  • 14. How a Project portal reaches a client
  • 15. One matter's document never backs another matter's
  • 16. A private image registry
  • 17. The cluster comes up

4. Environment Matrix

  • 18. Three operating modes, two deployment profiles
  • 19. Configuration precedence: the first source wins
  • 20. Local dev controls: inputs read by `navigator dev`
  • 21. Local runtime: what `.devx/env` generates
  • 22. The store: SurrealDB
  • 23. Where SurrealDB authorization lives
  • 24. Deployed runtime: core web and worker wiring
  • 25. Deployed runtime: identity and access
  • 26. Deployed runtime: email, signatures, and billing
  • 27. Deployed runtime: repositories, content, AI, and scheduled work
  • 28. Provision and ship: variables read by the operator CLI
  • 29. Ancillary operations and opt-in test controls
  • 30. When simulated data appears

5. Configure the Trust Boundaries

  • 31. Secrets: the invariants that gate the boot
  • 32. Sign-in: bring an OIDC provider; passwords live there, not here
  • 33. Role rings: who can do what
  • 34. Provider signup and parity across the deployments
  • 35. The external surface — every third party, in one place
  • 36. The two service deployments
  • 37. Security architecture

6. Ship the Instance

  • 38. Ship and verify
  • 39. Post the verified handoff in `#navigator`
  • 40. Point your domain at the instance (optional)
  • 41. Drive it from the CLI
  • 42. Make it yours — white-label under your own brand
  • 43. This is how we set up Neon Law Foundation

7. Wrap Up

  • 44. Canonical references

Deployed runtime: repositories, content, AI, and scheduled work

CapabilityEnvironment variables
Mounted Git writerNAVIGATOR_GIT_REPO_ROOT
Deployment's own organizationNAVIGATOR_GITHUB_ORG — required once a deployment is named, no default
Governance write boundaryNAVIGATOR_GIT_HOST — read only by ops github setup, no default
GitHub App identityNAVIGATOR_GITHUB_APP_ID
GitHub App proofNAVIGATOR_GITHUB_APP_PRIVATE_KEY, NAVIGATOR_GITHUB_INSTALLATION_ID
GitHub endpointNAVIGATOR_GITHUB_API_BASE
GitHub webhook receiverNAVIGATOR_GITHUB_WEBHOOK_SECRET, NAVIGATOR_GITHUB_CANONICAL_REPOSITORY
Receiver identity and Restate submitNAVIGATOR_GITHUB_APP_LOGIN, RESTATE_INGRESS_URL, RESTATE_AUTH_TOKEN
GitHub concurrency capNAVIGATOR_GITHUB_MAX_CONCURRENT
GitHub revision capNAVIGATOR_GITHUB_MAX_REVISE_ROUNDS
GitHub daily token capNAVIGATOR_GITHUB_MAX_DAILY_TOKENS
DevX Slack worker (in workflows-service)SLACK_WEBHOOK_URL
Main content rootsNAVIGATOR_PUBLIC_DIR, NAVIGATOR_BLOG_DIR, NAVIGATOR_WORKSHOPS_DIR
Other content rootsNAVIGATOR_MARKETING_DIR, NAVIGATOR_EVENTS_DIR, NAVIGATOR_FOUNDATION_DIR
CLI login fileNAVIGATOR_CREDENTIALS_FILE, NAVIGATOR_CONFIG_DIR
CLI live inquiryNAVIGATOR_NOTATION_TEMPLATE, NAVIGATOR_SPEECH_BACKEND
Harness worktree/cacheNAVIGATOR_WORKTREE_PATH, NAVIGATOR_CHROME_CACHE_DIR
Vertex coordinatesNAVIGATOR_GCP_PROJECT_ID, NAVIGATOR_GCP_LOCATION, GOOGLE_METADATA_URL
AIDA routerNAVIGATOR_ROUTER_MODEL
Contract reviewerNAVIGATOR_CONTRACT_REVIEW_MODEL plus the same GCP project, location, and metadata variables
On-chain attestationNAVIGATOR_ONCHAIN_BACKEND, SOLANA_RPC_URL, SOLANA_PROGRAM_ID, SOLANA_SIGNER_SECRET
Billing exportBILLING_EXPORT_TABLE, BIGQUERY_PROJECT
Billing noticesBILLING_CANARY_NOTIFY_EMAIL
Billing digestBILLING_DIGEST_NOTIFY_EMAIL, BILLING_DIGEST_WINDOW_DAYS

Presenter notes

Matter creation must have a real Git writer even if the higher-level forge is local. The content variables only relocate the read-only files baked into the image. AIDA uses NullRouter without the GCP project; contract review uses StubContractReviewer without the same Vertex coordinates. The on-chain backend defaults to null, recording no transaction. Scheduled cost and billing diagnostics stay disabled when their table or recipient variables are absent.

The GitHub webhook receiver is the exception to that degrade-quietly pattern, and where it runs is deliberate. It is served at POST workflows.<domain>/webhooks/github/{secret} by workflows-service, on its own Axum listener (WORKFLOWS_WEBHOOK_LISTEN, 9082) beside the worker's Restate endpoint; the Envoy sidecar routes /webhooks/github/* to that listener and every other path to the Restate leg. It runs on the workflows host, not on www, because www goes entirely behind the firm's Tailscale tailnet — and GitHub, an external sender that cannot join a tailnet, can only reach a public host. That split is the rule worth remembering: the VPN protects the human surface (www, the portal, the workbench), while a machine caller's endpoint stays public and is authenticated by the signature it carries, not by the network it arrives from. GitHub signs each delivery, so the receiver verifies X-Hub-Signature-256 against the raw body — which is why the Envoy leg to it stays HTTP/1.1 end to end and forwards the bytes unaltered.

Startup still requires the webhook secret, canonical repository, GitHub org, and app login, and RESTATE_INGRESS_URL plus RESTATE_AUTH_TOKEN: a receiver that cannot verify a delivery or reach the Restate ingress has no safe reduced mode. It is still one worker process — there is no separate receiver container — but it now owns a second listener port that Envoy fronts, rather than sharing web's. The DevX Slack services DevxIssueTriage and devx-pr fold into workflows-service alongside the legal workflows and the receiver; they alone read SLACK_WEBHOOK_URL and fail closed when Slack is absent so Restate can retry instead of acknowledging a lost engineering notice. Only neon-law-stg is allowed to mount the receiver or bind the GitHub services. It also requires positive NAVIGATOR_GITHUB_MAX_CONCURRENT, NAVIGATOR_GITHUB_MAX_REVISE_ROUNDS, and NAVIGATOR_GITHUB_MAX_DAILY_TOKENS values: its singleton devx-guardrails/global object serializes all reservations, defers work at the concurrency cap, and pauses new token reservations through the UTC-day reset. Other deployments do not bind that object or read these limits.

The receiver watches two GitHub owners. The product code lives at github.com/neon-law-foundation/navigator and is always watched; the firm's private per-Project repos live under github.com/neon-law-firm/<projects.code>, where neon-law-firm is NAVIGATOR_GITHUB_ORG. A delivery is accepted when it comes from the canonical code repository or any repo owned by that org.

View all slidesOpen display
← PreviousNext →
Neon Law
BlogContactFoundationNavigatorPresentationsWorkshops
Contact us — contact@neonlaw.com+1 510 800 2080
  • Nevada
    5150 Mae Anne AveSte 405-9002Reno, NV 89523
  • New York
    12 E 49th St18th FloorNew York, NY 10017
  • Washington
    720 Seneca StSte 107-715Seattle, WA 98101

© 2026 Shook Law PLLC and Neon Law Foundation

This is attorney advertisement. Nothing on this site is legal advice. Neon Law is the trade name of Shook Law PLLC, and an attorney-client relationship begins only with a signed retainer between you and Shook Law PLLC. Published flat fees cover the scope each one names and do not include third-party filing fees. Every legal matter is different, and past results do not guarantee a similar result.

Shook Law PLLC is a proud supporter of the Neon Law Foundation , a 501(c)(3) nonprofit.

Neon Law Foundation is a Nevada nonprofit corporation and a 501(c)(3) tax-exempt organization. It does not practice law and cannot represent you.

Nothing on this site is legal advice, and nothing here creates an attorney-client relationship.

5150 Mae Anne Ave Ste 405-9999, Reno, NV 89523
support@neonlaw.orgTransparency & public disclosures

Powered by Neon Law Navigator #26.8.20-hotfix.4

Open source — neon-law-foundation/navigator GitHub stars 2