Enterprise tier

Self-hosted deployment

Run AAS Studio in your own infrastructure for data residency, regulated workloads, or air-gapped environments. Same code that powers the SaaS, packaged for your VPC.

When self-hosted matters

  • Data residency — your AAS files never leave your infrastructure. Required for German Mittelstand, EU defence-adjacent manufacturers, and regulated industries.
  • Air-gapped networks — no outbound internet at runtime. Self-hosted images can run with all LLM providers swapped to internal-only inference (e.g. Llama/Mistral on local GPUs).
  • Catena-X data spaces — federation members typically deploy AAS Studio inside their own EDC (Eclipse Dataspace Connector) network, calling IDTA-01002 Part 2 API internally.
  • Procurement deadlines— RFPs that mandate “cloud-only is excluded” clause exclude SaaS vendors automatically. Self-hosted unlocks that segment.

Architecture

One Next.js Node container + a Postgres database + (optional) S3-compatible blob store for large PDFs (>4.5 MB). Same layout as the production SaaS — minus Vercel-specific edge.

┌──────────────┐
│  Reverse     │
│  proxy (TLS) │  e.g. Traefik / Caddy / nginx
└──────┬───────┘
       │ :3000
┌──────▼───────┐    ┌──────────────┐
│  AAS Studio  │───▶│  Postgres    │
│  (Node 20)   │    │  (your own)  │
└──────┬───────┘    └──────────────┘
       │ :9000 (optional)
┌──────▼───────┐
│  S3-compat   │  e.g. MinIO; for >4.5 MB PDFs only
└──────────────┘

Quick start (Docker Compose)

The repository ships a Dockerfile + docker-compose.yml ready to run. The image is <200 MB, multi-stage, runs as a non-root user.

# 1. Clone
git clone https://github.com/MiguelReisRepo/AAS-Studio.git
cd AAS-Studio

# 2. Configure env
cp .env.example .env
# Edit .env: set DATABASE_URL, CLERK_*, GEMINI_API_KEY (or alt LLM)

# 3. Start
docker compose up -d

# 4. Run migrations
docker compose exec app npx prisma migrate deploy

# 5. Visit
open https://aas.your-domain.com

Required environment variables

Minimum viable set. Everything else (proxy fallback, datasheet search, OCR keys) is optional — the app degrades gracefully with clear error responses where features need keys you haven’t configured.

VariableRequiredPurpose
DATABASE_URLPostgres connection (e.g. postgres://...)
CLERK_SECRET_KEYAuth backend (or swap for your IdP via OIDC)
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEYAuth frontend
NEXT_PUBLIC_APP_URLExternally-visible URL (e.g. https://aas.acme.com)
GEMINI_API_KEY~At least one LLM key required (any of: GEMINI_API_KEY, ANTHROPIC_API_KEY, OPENAI_API_KEY, GROK_API_KEY)
EMBED_SESSION_SECRETiframe32+ char random hex; only if /embed/* widget is used
BLOB_READ_WRITE_TOKEN>4.5MBVercel Blob token; or run MinIO and point at it
SCRAPINGBEE_API_KEYoptionalResidential proxy fallback for vendor sites
TAVILY_API_KEYoptional/v1/search-datasheets backend
ADMIN_EMAILSoptionalComma-separated emails granted unlimited extractions

Standards conformance

Self-hosted instances are byte-identical to the SaaS — same code, same conformance statement. The build runs prisma migrate deploy which is idempotent and safe across upgrades. Migration history lives in prisma/migrations/.

Air-gapped deployments

For environments without outbound internet:

  • Build the Docker image on a connected build host, push to your private registry, pull from inside the air-gap.
  • Swap LLM providers for internal endpoints (e.g. Ollama running Llama 3 on local GPU). The LLM client (lib/ai/llm-client.ts) accepts a baseUrl override per provider.
  • Skip the SCRAPINGBEE_API_KEY + TAVILY_API_KEY — datasheet web-search will return a clear “not configured” error rather than silently fail.
  • Preview the AAS public viewer (/aas/[id]) on internal hosts only — set NEXT_PUBLIC_APP_URL to your internal domain.

Helm chart (Kubernetes)

For Kubernetes deployments, contact us for the Helm chart that wraps the Docker image with proper liveness/readiness probes, ingress configuration, and a sidecar for running migrations on rollout.

Status: chart is in private preview. Email contact@aas-studio.comwith your cluster shape and we’ll send you the values.yaml template.

Need help with the deployment?

Two-developer team — when something breaks at 2am you ping the people who wrote the code.

contact@aas-studio.com

Command palette

Navigate + run actions