ViteHub

Env quickstart

Declare one Vite build value, one Nitro runtime secret, and verify both outputs.

This guide shows the two Env paths:

  • Public Env values exposed through #vitehub/env/public
  • Server Env values exposed through #vitehub/env/server
Prompt
Set up @vitehub/env in this app.

- Install @vitehub/env
- Register envVite() or envNitro()
- Declare a public build value
- Declare a server-only Runtime Env secret
- Read generated Public Env and Server Env from app code

Docs: /docs/vite/env/quickstart or /docs/nitro/env/quickstart

Install Env

pnpm add @vitehub/env

Register the integration

Register the Nitro module and declare a server-only secret:

nitro.config.ts
import { env, envNitro } from '@vitehub/env/nitro'
import { defineNitroConfig } from 'nitro/config'

export default defineNitroConfig({
  modules: [envNitro()],
  env: {
    auth: {
      token: env({
        secret: true,
      }),
    },
  },
})

Read Env values

Read Server Env from the Nitro server helper:

server/api/config.get.ts
import { useServerEnv } from '#vitehub/env/server'

export default defineEventHandler((event) => {
  const env = useServerEnv(event)

  return {
    hasAuthToken: Boolean(env.auth.token.unseal()),
  }
})

Verify the result

Set the runtime secret and start Nitro:

AUTH_TOKEN="local-secret" pnpm dev

Read the config route:

curl http://localhost:3000/api/config

Expected response:

{
  "hasAuthToken": true
}

Next steps

  • Use Usage for defaults, optional values, explicit sources, schemas, and diagnostics.
  • Use Runtime API for exact declaration shapes.
  • Use Troubleshooting if generated types or runtime values are missing.
Copyright © 2026