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.

