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 (the repository is private — access comes with the
#    self-hosting agreement; write to miguel.reis@aas-studio.eu)
git clone git@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 miguel.reis@aas-studio.euwith 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.

miguel.reis@aas-studio.eu

Command palette

Navigate + run actions