This file is the practical companion to the higher-level docs. Every command here is intended to be copy-pastable and aligned with Bloom's current CLI surface.
Bloom's shared Cognito workflow now comes from daycog plus daylily-auth-cognito 2.0. Use the browser/session and runtime helper split from that package, and keep service runtime code out of daylily_auth_cognito.cli.
From the repo root:
source ./activate <deploy-name>
bloom --help
bloom config pathFor a typical local bring-up:
source ./activate bringup
bloom config init
bloom db build --target local
bloom config status
bloom config doctorWhat those steps do:
source ./activate <deploy-name>creates or activates the deployment-scoped repo environmentbloom config initseeds the deployment-scoped YAML from the packaged templatebloom db build --target localdelegates runtime/bootstrap work to TapDBbloom config statusshows the effective current configbloom config doctorvalidates environment, dependencies, config, and writable paths
Bloom's supported config paths are deployment-scoped:
~/.config/bloom-<deploy-name>/bloom-config-<deploy-name>.yaml
~/.config/tapdb/bloom/bloom-<deploy-name>/tapdb-config.yaml
Show where Bloom expects its config:
source ./activate bringup
bloom config pathInspect the resolved config status:
source ./activate bringup
bloom config statusRun a full doctor pass:
source ./activate bringup
bloom config doctorEdit the Bloom YAML in your configured editor:
source ./activate bringup
bloom config editThe current supported bootstrap command is:
source ./activate bringup
bloom db build --target localSeed template data when needed:
source ./activate bringup
bloom db seedIf you see older references to bloom db init in historical notes, activation banners, or external service-catalog metadata, use bloom db build --target local. The current Bloom CLI help is authoritative.
Start:
source ./activate bringup
bloom server start --port 8912Check liveness and readiness:
curl -k https://127.0.0.1:8912/healthz
curl -k https://127.0.0.1:8912/readyzInspect logs and status:
source ./activate bringup
bloom server status
bloom server logsStop:
source ./activate bringup
bloom server stopBloom's normal auth setup is YAML-first for service startup, with shared Cognito lifecycle delegated through daycog and namespaced binding delegated through tapdb.
source ./activate bringup
daycog list-pools --region us-west-2
daycog list-apps --pool-name <shared-pool-name>If the shared pool already has a bloom app client, reuse it. If not:
source ./activate bringup
tapdb --config ~/.config/tapdb/bloom/bloom-bringup/tapdb-config.yaml \
cognito add-app \
--app-name bloom \
--pool-name <shared-pool-name> \
--callback-url https://localhost:8912/auth/callback \
--logout-url https://localhost:8912/source ./activate bringup
tapdb --config ~/.config/tapdb/bloom/bloom-bringup/tapdb-config.yaml \
db-config update \
--cognito-user-pool-id <pool-id> \
--cognito-app-client-id <client-id> \
--cognito-client-name bloom \
--cognito-region us-west-2 \
--cognito-domain <hosted-ui-domain> \
--cognito-callback-url https://localhost:8912/auth/callback \
--cognito-logout-url https://localhost:8912/Open the Bloom config:
source ./activate bringup
bloom config editSet the auth block:
auth:
cognito_user_pool_id: <pool-id>
cognito_client_id: <client-id>
cognito_region: us-west-2
cognito_domain: <hosted-ui-domain>
cognito_redirect_uri: https://localhost:8912/auth/callback
cognito_logout_redirect_uri: https://localhost:8912/
tapdb:
env: dev
client_id: bloom
database_name: bloom
config_path: /Users/<you>/.config/tapdb/bloom/bloom-bringup/tapdb-config.yamlsource ./activate bringup
bloom config status
bloom config doctorImportant:
- do not rely on
BLOOM_AUTH__...env vars for normal setup - do not use
BLOOM_OAUTH=noas the default local workflow - exact callback and logout URLs matter; mismatches commonly show up as Hosted UI redirect/logout failures
Anonymous-ish probe checks:
curl -k https://127.0.0.1:8912/healthz
curl -k https://127.0.0.1:8912/readyz
curl -k https://127.0.0.1:8912/health/metricsAuthenticated health surfaces:
curl -k https://127.0.0.1:8912/health \
-H "Authorization: Bearer <blm-token>"
curl -k https://127.0.0.1:8912/db_health \
-H "Authorization: Bearer <blm-token>"Useful authenticated observability paths:
/obs_services/api_health/endpoint_health/db_health/api/anomalies/my_health/auth_health
Run a narrow unit/API target without tripping the repo-wide coverage gate:
source ./activate bringup
pytest --no-cov tests/test_execution_queue_api.py -q
pytest --no-cov tests/test_api_auth_rbac.py -q
pytest --no-cov tests/test_graph_viewer_api.py -qRun the committed browser auth E2E tests:
source ./activate bringup
E2E_USER_PASSWORD=... pytest tests/e2e/test_auth_e2e.py -m e2eRun broader checks:
source ./activate bringup
ruff check bloom_lims tests
pytest -qRemember that plain pytest will enforce the repo's current coverage gate unless you opt out with --no-cov for focused runs.
Check auth context:
curl -k https://localhost:8912/api/v1/auth/me \
-H "Authorization: Bearer <blm-token>"Run search v2:
curl -k https://localhost:8912/api/v1/search/v2/query \
-H "Authorization: Bearer <blm-token>" \
-H "Content-Type: application/json" \
-d '{"query":"sample","record_types":["instance"],"page":1,"page_size":25}'Register an execution worker:
curl -k https://localhost:8912/api/v1/execution/actions/register-worker \
-H "Authorization: Bearer <blm-token>" \
-H "Content-Type: application/json" \
-d '{
"worker_key": "worker://demo/local-1",
"display_name": "Local Demo Worker",
"worker_type": "SERVICE",
"status": "ONLINE"
}'The fastest supported debug loop is:
source ./activate bringup
bloom config doctor
bloom config status
bloom server start --port 8912
bloom server logsIf startup aborts immediately, Bloom is usually telling you that one of these is missing:
- TapDB namespace config
- Cognito pool/client/domain/redirect config
- a writable runtime/storage path
Symptoms:
bloom config doctorwarns thatauth.cognito_*fields are missing- server startup aborts with missing required configuration
Fix:
- populate the deployment-scoped Bloom YAML
- populate the TapDB namespace config through
tapdb db-config update
Symptoms:
- doctor warns you are not in the expected Bloom conda env
Fix:
- use
source ./activate <deploy-name> - current Bloom expects
BLOOM-<deploy-name>, not a single hard-codedBLOOMenv name
Symptoms:
- readiness fails
- DB health fails
- GUI routes block on missing DB access
Fix:
source ./activate bringup
bloom db build --target local
bloom config doctorSymptoms:
- Cognito error pages during login or logout
- redirect to the wrong host or path
Fix:
- set the exact callback URL and logout URL in both:
- Bloom YAML
- TapDB namespace config
For local HTTPS the expected pair is usually:
https://localhost:8912/auth/callback
https://localhost:8912/
Symptoms:
- doctor warns that the upload directory does not exist or is not writable
Fix:
- if you use the default, Bloom now creates the deployment-scoped upload directory automatically
- if you override it, make sure the custom path exists and is writable by the current process
Default pattern:
~/.config/tapdb/bloom/bloom-<deploy-name>/<tapdb-env>/uploads
Symptoms:
- you see mixed guidance between
initandbuild
Fix:
- use
bloom db build --target local - treat repo-local Bloom CLI help and these docs as authoritative