Skip to content

Self-hosted models: a request limit the starter plan schedules, reuse of a filled weights volume, no Claude session variables; release 0.7.2 - #34

Merged
flujo-app merged 1 commit into
mainfrom
selfhost-plan-limits
Nov 12, 2026
Merged

flujo-app merged 1 commit into
mainfrom
selfhost-plan-limits

Conversation

@flujo-app

@flujo-app flujo-app commented Nov 12, 2026 •

Copy link
Copy Markdown
Owner

Part of #33 (point 2, and the cause of point 1; what is left of point 1 stays in #33).

What changes

  • request_timeout_minutes now defaults to 30. Modal's starter plan never schedules a GPU function whose request limit is 45 minutes or more: the deployment and every request wait without an error (measured Nov 11: 10 to 30 minutes start in seconds, 45 and 60 never). Both profiles inherit the new default; a plan that allows more can still set it. The limit is validated (1 to 1440) and shown in describe().
  • weights_volume / compile_volume: an existing volume (for example one an earlier deployment filled) holds the weights or vLLM's compile caches. The app uses it instead of creating its own volume, and retire never deletes it. describe() names the volumes and says which ones the app owns.
  • claudeProviderEnvironment(provider, { inherited }) clears every inherited Claude session variable by name pattern (CLAUDE*, ANTHROPIC_*, *OAUTH*), so a Claude Code child started from inside a Claude session uses the endpoint key instead of offering the session's login (HTTP 401). inherited defaults to this process; the local lite worker passes its own env, and the cloud Claude driver passes {} because it builds its environment from scratch (so its own CLAUDE_CONFIG_DIR and the like are never cleared).
  • Version 0.7.2.

Still open from #33: the deploy still cannot tell a scheduler that never starts the GPU from a slow cold start. With the 30-minute default the known cause is gone; reading the scheduler's message is left in #33.

Tests

  • Windows, Node 22.13: test/model-provider.test.mjs, test/selfhost-modal.test.mjs, test/cloud-lite-claude.test.mjs, test/cloud-lite-provider.test.mjs 45/45; the whole focused list of public-sdk.yml 198/200, the two failures are node:sqlite backup missing in Node 22.13 (needs 22.17), unrelated to this change; Python settings tests 11/11.
  • Linux: not run locally (Docker Desktop is not running on this PC); the PR's GitHub job is the Linux run.
  • New tests: the starter-plan limit for both profiles, reused volumes (created by nobody, kept after retire, never named in a delete), Claude session variables cleared while the provider's own settings win.

…euse of an earlier weights volume, no Claude session variables in a worker's Claude Code; release 0.7.2

- request_timeout_minutes defaults to 30: the starter plan never schedules a GPU function with a limit of 45 minutes or more, and the deployment and every request then wait without an error (#33).
- weights_volume / compile_volume: use an existing volume (for example one an earlier deployment filled) instead of creating the app's own; retire never deletes it.
- claudeProviderEnvironment clears every inherited Claude session variable by name pattern (inherited, default this process), so a Claude Code child started from inside a Claude session uses the endpoint key, not the session's login (#33).
@flujo-app
flujo-app merged commit e93604d into main Nov 12, 2026
2 checks passed
@flujo-app
flujo-app deleted the selfhost-plan-limits branch November 12, 2026 11:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant