Skip to content

Environment File Reference

SkillMeat reads runtime configuration from a .env file in the directory you run compose from. Each deployment profile has a dedicated template with inline comments explaining every variable. Use this page to download the template that matches your scenario.

Already have the repo?

If you've cloned skillmeat, copy the matching .env.*.example from the repo root instead of downloading — they are the same files.

Choosing a Template

Template Profile Database Auth Best For
.env.local.example local SQLite None Personal use, quickstart, offline dev
.env.local-auth.example local-auth SQLite Clerk Small teams on a single host
.env.enterprise.example enterprise PostgreSQL Clerk (configurable) Multi-tenant production
.env.production.example any any any Production with managed secrets
.env.web.example Next.js web UI standalone dev

Pair the template you pick with the compose files from the Container Deployment guide.

Downloading Templates

Local

Zero-config SQLite with no authentication. Safe defaults for a single-user machine.

  • Download: .env.local.example
  • Raw from GitHub:
    curl -o .env https://raw.githubusercontent.com/miethe/skillmeat/main/.env.local.example
    

Local with Auth

SQLite backend with Clerk authentication enabled — useful when a small team shares a single deployment and needs named accounts.

  • Download: .env.local-auth.example
  • Raw from GitHub:
    curl -o .env https://raw.githubusercontent.com/miethe/skillmeat/main/.env.local-auth.example
    

Required edits after copying:

  • CLERK_SECRET_KEY / CLERK_PUBLISHABLE_KEY — from your Clerk dashboard.

Enterprise

PostgreSQL backend, multi-tenant RLS, full observability hooks. Intended for production deployments.

  • Download: .env.enterprise.example
  • Raw from GitHub:
    curl -o .env https://raw.githubusercontent.com/miethe/skillmeat/main/.env.enterprise.example
    

Required edits after copying:

Variable What it does Example
DATABASE_URL PostgreSQL connection string postgresql://skillmeat:password@postgres:5432/skillmeat
POSTGRES_PASSWORD Database user password (if using bundled postgres service) your-secure-password
SKILLMEAT_EDITION Must be set to enterprise enterprise
SKILLMEAT_AUTH_ENABLED Enable authentication true
SKILLMEAT_AUTH_PROVIDER Auth mechanism: clerk or local clerk
CLERK_JWKS_URL Clerk JWT key set URL (when using Clerk) https://<your-clerk-id>.clerk.accounts.com/.well-known/jwks.json
CLERK_ISSUER Clerk JWT issuer (when using Clerk) https://<your-clerk-id>.clerk.accounts.com
SKILLMEAT_ENTERPRISE_PAT_SECRET Shared secret for enterprise service clients your-enterprise-pat
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY Frontend Clerk key (when using Clerk) pk_live_...
NEXT_PUBLIC_SKILLMEAT_EDITION Frontend edition flag — must match backend enterprise
NEXT_PUBLIC_AUTH_ENABLED Frontend auth flag — must match backend true

Important notes:

  • DATABASE_URL format: postgresql://username:password@hostname:port/database
  • For container deployments (compose): hostname is postgres (service name)
  • For external/managed databases: hostname is your database host
  • NEXT_PUBLIC_* variables are inlined at build time. Changing them requires rebuilding the Next.js frontend:
    ./compose.sh --profile enterprise up -d --build  # Rebuilds frontend
    
  • Without SKILLMEAT_ENTERPRISE_PAT_SECRET, the enterprise download/sync endpoints will reject requests
  • All REPLACE_WITH_* placeholders must be filled before deploying

Production

Template oriented around production deployments where secrets are injected from a secrets manager (Vault, AWS Secrets Manager, GCP Secret Manager). Documents every variable the compose stack consults at startup.

  • Download: .env.production.example
  • Raw from GitHub:
    curl -o .env https://raw.githubusercontent.com/miethe/skillmeat/main/deploy/.env.example
    

Do not commit real secrets

Treat any filled-in .env as sensitive. Production deployments should source secrets from a vault and inject them at container start, not store them on disk.

Web UI Standalone

For running only the Next.js frontend against a remote API (e.g., during frontend development). Not required when using the compose stack.

  • Download: .env.web.example — copy to skillmeat/web/.env.local.
  • Raw from GitHub:
    curl -o skillmeat/web/.env.local https://raw.githubusercontent.com/miethe/skillmeat/main/skillmeat/web/.env.example
    

Applying a Template

  1. Download the template that matches your scenario.
  2. Copy it to .env (or .env.local for the web template) in the directory where you'll run compose:
    cp .env.local.example .env
    
  3. Edit the file and fill in any values marked REQUIRED or # TODO.
  4. For container deployments using Podman (Fedora, RHEL):
    ./compose.sh --profile enterprise up -d --build
    
    For Docker:
    docker compose --profile enterprise up -d --build
    
  5. For bare-metal/systemd deployments:
    skillmeat web start
    

All templates include extensive inline comments — open the file in a text editor to see the full reference for each variable.

Build-Time Variables

Environment variables prefixed with NEXT_PUBLIC_ are inlined into the frontend at build time. Changing them requires rebuilding the web container with the --build flag. All other variables can be updated without rebuilding.