mirror of
https://github.com/HeyPuter/puter.git
synced 2026-09-09 14:55:47 +00:00
A seat is a real Puter account: it takes a name from the global username pool and gets a home directory. Nothing charges for one — that is prod's job — so until it does, the only bound on creation is the request rate limit, which bounds the rate and not the total. max_teams_per_user default 1 max_seats_per_team default 50 Ordering is the substance of both checks. The team cap is tested before the handle, so a capped user is told they are capped rather than that the name they picked was unusable. The seat cap is tested before any account state exists, so a refused provision does not burn a global username. Soft-deleted teams do not count toward the owner's cap, so deleting frees the slot — which does mean create, provision, delete, repeat still consumes usernames over time, bounded by the daily rate limit. The caps raise the cost and make the cycle audited; they do not close it. Lowering the seat limit blocks new provisioning and disables nobody. Both limits are published in rate-limits-and-quotas.md, and both keys are documented in config.template.jsonc and config.default.json. Closes PUT-1758.
48 lines
1.5 KiB
JSON
48 lines
1.5 KiB
JSON
{
|
|
"config_name": "oss-default",
|
|
"env": "dev",
|
|
"port": 4100,
|
|
"protocol": "http",
|
|
"domain": "puter.localhost",
|
|
"cookie_name": "puter_auth_token",
|
|
"jwt_secret_v2": "dev-jwt-secret-v2-change-me",
|
|
"url_signature_secret": "dev-url-signature-secret-change-me",
|
|
"allow_all_host_values": true,
|
|
"allow_no_host_header": true,
|
|
"no_devwatch": false,
|
|
"enable_public_folders": true,
|
|
"is_storage_limited": false,
|
|
"min_pass_length": 6,
|
|
"static_hosting_domain": "site.puter.localhost",
|
|
"static_hosting_domain_alt": "host.puter.localhost",
|
|
"private_app_hosting_domain": "app.puter.localhost",
|
|
"private_app_hosting_domain_alt": "dev.puter.localhost",
|
|
"captcha": { "enabled": false },
|
|
"default_user_group": "78b1b1dd-c959-44d2-b02c-8735671f9997",
|
|
"default_temp_group": "b7220104-7905-4985-b996-649fdcdb3c8f",
|
|
"storage_capacity": 104857600,
|
|
"disable_user_signup": false,
|
|
"teams_enabled": false,
|
|
"max_teams_per_user": 1,
|
|
"max_seats_per_team": 50,
|
|
"strict_email_verification_required": false,
|
|
"gui_assets_root": "./src/gui",
|
|
"puterjs_root": "./src/puter-js/dist",
|
|
"builtin_apps": {
|
|
"dev-center": "./src/dev-center"
|
|
},
|
|
"extensions": [
|
|
"./extensions"
|
|
],
|
|
"database": {
|
|
"engine": "sqlite",
|
|
"path": "volatile/runtime/puter-database.sqlite"
|
|
},
|
|
"s3": {
|
|
"localConfig": {
|
|
"dataDir": "volatile/runtime/fauxqs-data",
|
|
"s3StorageDir": "volatile/runtime/fauxqs-s3-data"
|
|
}
|
|
}
|
|
}
|