.sqlx/ offline query cache (allows compilation without a live database in degraded mode)~/projects/kb-vault — a derivative of cloud state)~/.config/temper/config.toml or other local configinternal/superpowers/specs/2026-04-18-cloud-mode-and-portable-memory-design.md for the broader cloud-mode design these env vars belong to.| Variable | Purpose | Notes |
|---|---|---|
TEMPER_TOKEN | JWT access token for the temper API | When set, the client uses this in-memory and does not read ~/.config/temper/auth.json. Malformed tokens error rather than silently falling through. |
TEMPER_PROVIDER | Auth0 provider name that issued the token | Defaults to auth0. Typically only needed when a non-default provider is configured. |
TEMPER_DEVICE_ID | Stable device id for this session | When unset, a fresh UUIDv7 is generated per session. Set explicitly if you want a stable device id across session restarts. |
TEMPER_API_URL | API base URL override | Existing variable; takes precedence over config. |
.claude/settings.local.json), export TEMPER_TOKEN alongside cargo install --path crates/temper-cli --locked, and the temper CLI will authenticate without any interactive step or disk state.tools/bin/setup-claude-web.sh (lightweight, runs on SessionStart).env with Rust/API dev valuespackages/temper-ui/.env with SvelteKit stub values (sobun run check / build resolve $env/static/private imports — real.env or Vercel project env in prod)bun install at the workspace root to populate node_modules.claude/settings.json.claude/settings.local.json.tools/bin/setup-claude-web-full.sh (heavy, run manually)tools/cargo-make/scripts/claude-web/)setup-common.sh — shared helpers (log_ok, log_warn, persist_env, command_exists)setup-system-deps.sh — apt packagessetup-rust.sh — rustup, stable toolchainsetup-cargo-tools.sh — cargo-make, sqlx-cli, cargo-nextestsetup-postgres.sh — Docker PostgreSQL with pgvectorsetup-db-migrations.sh — runs sqlx migrationssetup-gh.sh — GitHub CLIcrates/
temper-api/src/
handlers/ # Axum route handlers (thin: extract, call service, respond)
services/ # Business logic (SQL queries, transactions)
middleware/ # JWT auth, CORS
routes.rs # Router wiring
state.rs # AppState (PgPool, config)
error.rs # ApiError enum → HTTP status codes
temper-core/src/
types/ # Shared domain types (serde + sqlx::FromRow + optional ts-rs)
temper-mcp/src/ # MCP server (rmcp, Streamable HTTP transport)
tools/ # Tool implementations
discovery.rs # OAuth well-known endpoints + DCR
middleware.rs # JWT validation for MCP
service.rs # TemperMcpService handler
router.rs # Axum router assembly
migrations/ # sqlx migrations (sequential timestamps)
api/
axum.rs # Vercel entry point for temper-api
mcp.rs # Vercel entry point for temper-mcptest-db — enables database integration testsweb-api — enables utoipa OpenAPI derives (temper-core)typescript — enables ts-rs type generation (temper-core)mcp — enables schemars JsonSchema derives for MCP tool parameters (temper-core)YYYYMMDDHHMMSS_description.sql (e.g., 20260406000001_resource_audits.sql)migrations/ directorykb_ prefixidx_tablename_columngen_random_uuid() for non-time-sorted, application-side Uuid::now_v7() for time-sortedcargo sqlx prepare --workspace to update .sqlx/ offline cachetemperkb.io (SvelteKit UI) and temper-cloud.vercel.app (Rust API + MCP)vercel.json at packages/temper-ui/vercel.json contains rewrites proxying /api/*, /mcp, /.well-known/*, /oauth/* to the API projectvercel.json at repo root routes to the Rust binaries (/api/axum, /api/mcp)temperkb.us.auth0.com is the sole OAuth provider.env files are stale — ignore themAUTH_PROVIDER_NAME should be auth0/oauth/registerUuid::now_v7()..sqlx/ directory contains cached query metadata. When a live database isn't available, sqlx compiles queries against this cache. Always run cargo sqlx prepare --workspace after changing any SQL queries to keep the cache in sync.cargo make check before considering the task complete.sqlx/ offline cache and note which tests remain to be run