Settings¶
Jmaple reads its config from environment variables (prefixed JMAPLE_) and an
optional .env file via pydantic-settings. Nested groups use __ as the
delimiter.
Top-level settings¶
| Variable | Default | Purpose |
|---|---|---|
JMAPLE_DATABASE_URL |
sqlite+aiosqlite:///./var/jmaple.db |
Async SQLAlchemy URL |
JMAPLE_BLOB_DIR |
./var/blobs |
Filesystem path for blob storage |
JMAPLE_PUBLIC_BASE_URL |
(derived from request) | Public URL used in session resource |
JMAPLE_DEBUG |
false |
Enables verbose logs and FastAPI debug mode |
Note: which capabilities are enabled is not an env-var setting. Registration is programmatic — see Capabilities for the ASGI app / CLI wrapper pattern.
Database¶
JMAPLE_DATABASE__POOL_SIZE=10
JMAPLE_DATABASE__MAX_OVERFLOW=20
JMAPLE_DATABASE__POOL_PRE_PING=true
JMAPLE_DATABASE__ECHO=false
SQLite ignores pool settings.
Core capability limits (RFC 8620 §2)¶
The values advertised on the session resource AND enforced by the dispatcher:
JMAPLE_CORE_CAPABILITY__MAX_SIZE_REQUEST=10485760
JMAPLE_CORE_CAPABILITY__MAX_CALLS_IN_REQUEST=16
JMAPLE_CORE_CAPABILITY__MAX_CONCURRENT_REQUESTS=4
JMAPLE_CORE_CAPABILITY__MAX_OBJECTS_IN_GET=256
JMAPLE_CORE_CAPABILITY__MAX_OBJECTS_IN_SET=256
JMAPLE_CORE_CAPABILITY__MAX_CONCURRENT_UPLOAD=4
Auth¶
JMAPLE_AUTH__PROVIDERS=["bearer","jwt"]
JMAPLE_AUTH__AUTO_PROVISION=true
JMAPLE_AUTH__ADMIN_SUBJECTS=["https://idp.example/|alice"]
JWT:
JMAPLE_AUTH__JWT__ISSUER=https://issuer.example/
JMAPLE_AUTH__JWT__AUDIENCE=jmaple
JMAPLE_AUTH__JWT__ALGORITHM=RS256
JMAPLE_AUTH__JWT__JWKS_URL=https://issuer.example/.well-known/jwks.json
JMAPLE_AUTH__JWT__JWKS_CACHE_TTL=3600
JMAPLE_AUTH__JWT__LEEWAY=30
OIDC:
JMAPLE_AUTH__OIDC__ISSUER=https://issuer.example/
JMAPLE_AUTH__OIDC__CLIENT_ID=jmaple
JMAPLE_AUTH__OIDC__FETCH_USERINFO=false
Push¶
JMAPLE_PUSH__SSE_PING_INTERVAL=30
JMAPLE_PUSH__SSE_MAX_LIFETIME=3600
JMAPLE_PUSH__WEBHOOK_VERIFICATION_TIMEOUT=10
JMAPLE_PUSH__WEBHOOK_DELIVERY_TIMEOUT=10
JMAPLE_PUSH__WEBHOOK_MAX_ATTEMPTS=3
Per-capability settings¶
Some capabilities accept admin-tunable runtime settings, stored in the
capability_settings table. Read/write via CLI:
jmaple capability settings get urn:example:todos
jmaple capability settings set urn:example:todos --json '{}'
If your capability defines a Pydantic settings_model on its Capability,
jmaple validates the JSON against it before writing.