feat: add spawner app for multi-user provisioning#71
Closed
dgokeeffe wants to merge 19 commits intodatasciencemonkey:mainfrom
Closed
feat: add spawner app for multi-user provisioning#71dgokeeffe wants to merge 19 commits intodatasciencemonkey:mainfrom
dgokeeffe wants to merge 19 commits intodatasciencemonkey:mainfrom
Conversation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Admin token handles privileged ops (secret scopes, ACLs, deploy) - User PAT creates app (ownership) + stored as runtime secret - SCIM /Me resolves PAT owner to derive app name - Secret resource included in app creation (no separate PATCH) - Each PAT stored with unique UUID key - /api/apps endpoint lists all spawned coding-agents apps - Makefile for deploy/redeploy with run polling - README documenting architecture and token model Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Isaac
Co-authored-by: Isaac
Pipe-based workspace import writes empty content. Write to temp file first, then import with --file flag. Co-authored-by: Isaac
Co-authored-by: Isaac
New apps are UNAVAILABLE until first deploy, so waiting for RUNNING causes a deadlock. Retry the deploy call with backoff. Co-authored-by: Isaac
Deploy API requires compute_status=ACTIVE (~80s after app creation). Gunicorn timeout bumped to 300s to handle the full provision flow. Co-authored-by: Isaac
Co-authored-by: Isaac
Random UUID secret keys caused re-provisions to store the PAT under a new key while the app still referenced the old one. Users had to enter their PAT twice because the first attempt's secret was orphaned. Co-authored-by: Isaac
Secret values stored via `echo | databricks secrets put-secret` include a trailing newline, causing invalid Authorization headers. Co-authored-by: Isaac
The Databricks Apps API returns state under `app_status`, not `status`. This caused the early-exit check to never detect running apps, and the spawned apps table to always show UNKNOWN. Co-authored-by: Isaac
Provision runs in a background thread so the endpoint returns immediately. UI polls /api/provision-status every 3s showing step-by-step progress with checkmarks. Apps table auto-refreshes every 10s and shows in-flight provisions. Supports multiple concurrent provisions. Co-authored-by: Isaac
Co-authored-by: Isaac
The list apps endpoint doesn't return app_status. Derive state from compute_status and active_deployment.status instead. Co-authored-by: Isaac
Co-authored-by: Isaac
Co-authored-by: Isaac
Co-authored-by: Isaac
4 tasks
Collaborator
|
More up to date version here #92 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a Spawner — a separate Databricks App that provisions per-user coding-agents instances with one click.
Key features:
coding-agents-david-okeeffe)Architecture:
spawner/app.py— Flask backend with background threading for async provisioningspawner/static/index.html— Databricks-themed UI with real-time progressspawner/Makefile— Deploy targets (make deploy,make sync-template,make redeploy)/Workspace/Shared/apps/coding-agentsTest plan
This pull request was AI-assisted by Isaac.