# SeaTable configuration SEATABLE_SERVER_URL= SEATABLE_API_TOKEN= # Optional: use in-memory mock client for local testing (true/1 to enable) SEATABLE_MOCK= # Server mode: selfhosted (default) or managed (multi-tenant HTTP with per-client auth) SEATABLE_MODE=selfhosted # Required in managed mode (min. 32 chars). Seals the OAuth access/refresh tokens and # client registrations the server issues, so the raw SeaTable API token is never handed # to a client. Must stay stable across restarts: generate with `openssl rand -hex 32`. # SEATABLE_TOKEN_SECRET= # Multi-base mode (selfhosted only): serve multiple bases from one process. # JSON array with base_name and api_token. Use instead of SEATABLE_API_TOKEN. # SEATABLE_BASES='[{"base_name":"CRM","api_token":"token_abc"},{"base_name":"Projects","api_token":"token_def"}]' # CORS: comma-separated list of allowed origins (HTTP mode only). If empty, CORS is disabled. # CORS_ALLOWED_ORIGINS=https://cloud.seatable.io,https://seatable-demo.de,http://localhost:3000 # OAuth (managed mode only): comma-separated hosts whose https callbacks are shown # without the "unknown destination" confirmation step. Loopback addresses and # private-use app schemes (cursor://, vscode://, ...) never need an entry — the # code stays on the user's machine. Unknown https hosts still work; the user just # has to confirm the destination first. Unset = the built-in list of hosted MCP # clients. A single '*' disables the confirmation entirely (not recommended). # SEATABLE_OAUTH_TRUSTED_REDIRECT_HOSTS=claude.ai,claude.com,chatgpt.com # Lifetime of an issued OAuth access token, in seconds (default 3600, range 30..2592000). # Lower it to narrow the window after a SeaTable token is revoked; raise it if real # clients renew badly and would otherwise re-prompt their users. Useful for testing: # set it to 120 and you see within minutes whether a client refreshes silently. # SEATABLE_ACCESS_TOKEN_TTL=3600