simpleaudit-studio 0.2.2__tar.gz → 0.2.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/PKG-INFO +6 -6
  2. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/README.md +5 -5
  3. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/docs/architecture.md +3 -10
  4. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/docs/deployment.md +11 -14
  5. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/pyproject.toml +1 -1
  6. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/simpleaudit_studio/cli.py +2 -2
  7. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/.dockerignore +0 -0
  8. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/.env.example +0 -0
  9. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/.env.local.example +0 -0
  10. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/.github/workflows/ci.yml +0 -0
  11. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/.github/workflows/publish.yml +0 -0
  12. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/.gitignore +0 -0
  13. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/Dockerfile +0 -0
  14. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/LICENSE +0 -0
  15. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/Makefile +0 -0
  16. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/accounts/__init__.py +0 -0
  17. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/accounts/admin.py +0 -0
  18. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/accounts/apps.py +0 -0
  19. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/accounts/auth_urls.py +0 -0
  20. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/accounts/migrations/0001_initial.py +0 -0
  21. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/accounts/migrations/0002_user_workos_user_id.py +0 -0
  22. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/accounts/migrations/__init__.py +0 -0
  23. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/accounts/models.py +0 -0
  24. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/accounts/project_urls.py +0 -0
  25. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/accounts/serializers.py +0 -0
  26. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/accounts/services.py +0 -0
  27. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/accounts/views.py +0 -0
  28. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/accounts/workos_auth.py +0 -0
  29. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/audits/__init__.py +0 -0
  30. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/audits/admin.py +0 -0
  31. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/audits/apps.py +0 -0
  32. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/audits/comparison.py +0 -0
  33. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/audits/events.py +0 -0
  34. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/audits/migrations/0001_initial.py +0 -0
  35. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/audits/migrations/0002_add_audit_run_archived.py +0 -0
  36. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/audits/migrations/0003_auditrun_updated_at.py +0 -0
  37. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/audits/migrations/__init__.py +0 -0
  38. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/audits/models.py +0 -0
  39. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/audits/serializers.py +0 -0
  40. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/audits/services.py +0 -0
  41. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/audits/urls.py +0 -0
  42. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/audits/views.py +0 -0
  43. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/config/__init__.py +0 -0
  44. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/config/asgi.py +0 -0
  45. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/config/settings.py +0 -0
  46. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/config/urls.py +0 -0
  47. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/config/wsgi.py +0 -0
  48. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/deploy/compose/Dockerfile +0 -0
  49. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/deploy/e2e_smoke.py +0 -0
  50. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/deploy/mock_openai_server.py +0 -0
  51. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/deploy/postgres-init.sql +0 -0
  52. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/deploy/seed_bulk.py +0 -0
  53. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/docker-compose.yml +0 -0
  54. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/docs/domain-model.md +0 -0
  55. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/e2e/test_ui.py +0 -0
  56. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/__init__.py +0 -0
  57. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/admin.py +0 -0
  58. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/apps.py +0 -0
  59. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/context_processors.py +0 -0
  60. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/engine.py +0 -0
  61. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/exceptions.py +0 -0
  62. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/fixtures/demo_audit_results.json +0 -0
  63. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/hashing.py +0 -0
  64. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/health.py +0 -0
  65. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/health_api.py +0 -0
  66. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/logging.py +0 -0
  67. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/management/__init__.py +0 -0
  68. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/management/commands/__init__.py +0 -0
  69. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/management/commands/bootstrap_platform.py +0 -0
  70. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/management/commands/purge_test_data.py +0 -0
  71. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/management/commands/run_worker.py +0 -0
  72. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/management/commands/seed_demo_audits.py +0 -0
  73. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/management/commands/seed_platform.py +0 -0
  74. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/middleware.py +0 -0
  75. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/minimal_config.py +0 -0
  76. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/permissions.py +0 -0
  77. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/readiness.py +0 -0
  78. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/seed.py +0 -0
  79. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/simpleaudit_package.py +0 -0
  80. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/startup_checks.py +0 -0
  81. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/tests/__init__.py +0 -0
  82. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/tests/factories.py +0 -0
  83. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/tests/test_api_e2e.py +0 -0
  84. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/tests/test_audit_archive.py +0 -0
  85. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/tests/test_audit_clone.py +0 -0
  86. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/tests/test_audit_events.py +0 -0
  87. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/tests/test_audit_poll_results.py +0 -0
  88. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/tests/test_audit_rename.py +0 -0
  89. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/tests/test_audit_run_freeze.py +0 -0
  90. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/tests/test_audit_sse.py +0 -0
  91. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/tests/test_audit_submission.py +0 -0
  92. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/tests/test_audit_timing.py +0 -0
  93. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/tests/test_auth_projects.py +0 -0
  94. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/tests/test_bootstrap.py +0 -0
  95. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/tests/test_comparison.py +0 -0
  96. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/tests/test_engine_integration.py +0 -0
  97. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/tests/test_health.py +0 -0
  98. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/tests/test_health_panel.py +0 -0
  99. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/tests/test_middleware.py +0 -0
  100. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/tests/test_minimal_config.py +0 -0
  101. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/tests/test_model_registry.py +0 -0
  102. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/tests/test_purge_test_data.py +0 -0
  103. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/tests/test_scenario_import_export.py +0 -0
  104. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/tests/test_scenarios.py +0 -0
  105. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/tests/test_seed_platform.py +0 -0
  106. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/tests/test_smoke_all_pages.py +0 -0
  107. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/tests/test_workspaces.py +0 -0
  108. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/tests/test_workspaces_ui.py +0 -0
  109. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/ui.py +0 -0
  110. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/infra/worker.py +0 -0
  111. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/manage.py +0 -0
  112. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/model_registry/__init__.py +0 -0
  113. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/model_registry/admin.py +0 -0
  114. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/model_registry/apps.py +0 -0
  115. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/model_registry/migrations/0001_initial.py +0 -0
  116. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/model_registry/migrations/__init__.py +0 -0
  117. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/model_registry/models.py +0 -0
  118. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/model_registry/serializers.py +0 -0
  119. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/model_registry/services.py +0 -0
  120. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/model_registry/urls.py +0 -0
  121. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/model_registry/views.py +0 -0
  122. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/requirements.txt +0 -0
  123. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/scenarios/__init__.py +0 -0
  124. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/scenarios/admin.py +0 -0
  125. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/scenarios/apps.py +0 -0
  126. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/scenarios/migrations/0001_initial.py +0 -0
  127. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/scenarios/migrations/__init__.py +0 -0
  128. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/scenarios/models.py +0 -0
  129. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/scenarios/serializers.py +0 -0
  130. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/scenarios/services.py +0 -0
  131. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/scenarios/urls.py +0 -0
  132. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/scenarios/views.py +0 -0
  133. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/simpleaudit_studio/__init__.py +0 -0
  134. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/static/favicon-16x16.svg +0 -0
  135. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/static/favicon-32x32.svg +0 -0
  136. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/static/favicon.svg +0 -0
  137. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/static/js/diff.min.js +0 -0
  138. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/static/logo.png +0 -0
  139. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/static/logo.svg +0 -0
  140. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/templates/404.html +0 -0
  141. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/templates/audit_detail.html +0 -0
  142. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/templates/auth/login.html +0 -0
  143. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/templates/auth/register.html +0 -0
  144. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/templates/auth/workos_login.html +0 -0
  145. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/templates/auth/workos_verify.html +0 -0
  146. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/templates/base.html +0 -0
  147. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/templates/compare.html +0 -0
  148. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/templates/dashboard.html +0 -0
  149. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/templates/health.html +0 -0
  150. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/templates/models.html +0 -0
  151. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/templates/new_audit.html +0 -0
  152. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/templates/scenario_result_detail.html +0 -0
  153. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/templates/scenarios.html +0 -0
  154. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/templates/workspaces.html +0 -0
  155. {simpleaudit_studio-0.2.2 → simpleaudit_studio-0.2.3}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: simpleaudit-studio
3
- Version: 0.2.2
3
+ Version: 0.2.3
4
4
  Summary: Production AI model audit platform — one-liner demo mode via uvx
5
5
  License: MIT
6
6
  License-File: LICENSE
@@ -52,7 +52,7 @@ A self-hostable platform for running reproducible AI model audits using the [Sim
52
52
  uvx simpleaudit-studio
53
53
  ```
54
54
 
55
- [`uvx`](https://docs.astral.sh/uv/#uvx) installs the [`simpleaudit-studio`](https://pypi.org/project/simpleaudit-studio/) package and runs it in an isolated environment. No Docker, no Postgres, no manual setup. Opens at http://localhost:8000 (login: `admin` / `admin12345`). A mock model server is pre-seeded so you can start exploring audit results immediately.
55
+ [`uvx`](https://docs.astral.sh/uv/#uvx) installs the [`simpleaudit-studio`](https://pypi.org/project/simpleaudit-studio/) package and runs it in an isolated environment. No Docker, no Postgres, no manual setup. Opens at http://localhost:8000 (login: `studio` / `admin123`). A mock model server is pre-seeded so you can start exploring audit results immediately.
56
56
 
57
57
  🌐 Or skip the setup entirely — try the live demo: <a href="https://sushantgautam-simpleaudit-studio.hf.space" target="_blank" rel="noopener noreferrer">sushantgautam-simpleaudit-studio.hf.space</a>
58
58
 
@@ -63,7 +63,7 @@ The pre-seeded connections point at a built-in mock server. To run real audits,
63
63
  | Provider | Base URL | Example |
64
64
  |----------|----------|---------|
65
65
  | Ollama (local) | `http://localhost:11434/v1` | Qwen 3, Llama 3.3, Mistral |
66
- | vLLM (GPU) | `http://your-gpu-server:8000/v1` | Any HF model |
66
+ | vLLM | `http://your-vllm-server:8000/v1` | Any HF model |
67
67
  | OpenAI | `https://api.openai.com/v1` | GPT-4o, o3 |
68
68
  | Together AI | `https://api.together.xyz/v1` | Many open models |
69
69
  | Groq | `https://api.groq.com/openai/v1` | Fast inference |
@@ -72,7 +72,7 @@ Set the API key in the connection form (leave blank for local servers that don't
72
72
 
73
73
  ## 🐳 Self-Hosting
74
74
 
75
- For teams, multi-user setups, or GPU worker pools, use Docker Compose:
75
+ For teams or multi-user setups, use Docker Compose:
76
76
 
77
77
  ```bash
78
78
  git clone https://github.com/SushantGautam/SimpleAuditStudio
@@ -84,7 +84,7 @@ docker compose up -d
84
84
 
85
85
  Services: Web UI (:8000), PostgreSQL, Hatchet queue (:8888), Worker. Optional profiles: `--profile storage` (MinIO), `--profile mock` (mock model API).
86
86
 
87
- See [docs/deployment.md](docs/deployment.md) for production hardening, GPU workers, backups, and upgrades.
87
+ See [docs/deployment.md](docs/deployment.md) for production hardening, backups, and upgrades.
88
88
 
89
89
  ## ✨ What You Can Do
90
90
 
@@ -111,7 +111,7 @@ Browser → Django/Gunicorn (:7860)
111
111
 
112
112
  - [Architecture](docs/architecture.md) — system design, service boundaries, deployment topology
113
113
  - [Domain Model](docs/domain-model.md) — scenarios, scenario sets, audit runs, immutability invariants
114
- - [Deployment](docs/deployment.md) — Docker Compose, production hardening, GPU workers, upgrades
114
+ - [Deployment](docs/deployment.md) — Docker Compose, production hardening, upgrades
115
115
 
116
116
  ## 🤝 Contributing
117
117
 
@@ -25,7 +25,7 @@ A self-hostable platform for running reproducible AI model audits using the [Sim
25
25
  uvx simpleaudit-studio
26
26
  ```
27
27
 
28
- [`uvx`](https://docs.astral.sh/uv/#uvx) installs the [`simpleaudit-studio`](https://pypi.org/project/simpleaudit-studio/) package and runs it in an isolated environment. No Docker, no Postgres, no manual setup. Opens at http://localhost:8000 (login: `admin` / `admin12345`). A mock model server is pre-seeded so you can start exploring audit results immediately.
28
+ [`uvx`](https://docs.astral.sh/uv/#uvx) installs the [`simpleaudit-studio`](https://pypi.org/project/simpleaudit-studio/) package and runs it in an isolated environment. No Docker, no Postgres, no manual setup. Opens at http://localhost:8000 (login: `studio` / `admin123`). A mock model server is pre-seeded so you can start exploring audit results immediately.
29
29
 
30
30
  🌐 Or skip the setup entirely — try the live demo: <a href="https://sushantgautam-simpleaudit-studio.hf.space" target="_blank" rel="noopener noreferrer">sushantgautam-simpleaudit-studio.hf.space</a>
31
31
 
@@ -36,7 +36,7 @@ The pre-seeded connections point at a built-in mock server. To run real audits,
36
36
  | Provider | Base URL | Example |
37
37
  |----------|----------|---------|
38
38
  | Ollama (local) | `http://localhost:11434/v1` | Qwen 3, Llama 3.3, Mistral |
39
- | vLLM (GPU) | `http://your-gpu-server:8000/v1` | Any HF model |
39
+ | vLLM | `http://your-vllm-server:8000/v1` | Any HF model |
40
40
  | OpenAI | `https://api.openai.com/v1` | GPT-4o, o3 |
41
41
  | Together AI | `https://api.together.xyz/v1` | Many open models |
42
42
  | Groq | `https://api.groq.com/openai/v1` | Fast inference |
@@ -45,7 +45,7 @@ Set the API key in the connection form (leave blank for local servers that don't
45
45
 
46
46
  ## 🐳 Self-Hosting
47
47
 
48
- For teams, multi-user setups, or GPU worker pools, use Docker Compose:
48
+ For teams or multi-user setups, use Docker Compose:
49
49
 
50
50
  ```bash
51
51
  git clone https://github.com/SushantGautam/SimpleAuditStudio
@@ -57,7 +57,7 @@ docker compose up -d
57
57
 
58
58
  Services: Web UI (:8000), PostgreSQL, Hatchet queue (:8888), Worker. Optional profiles: `--profile storage` (MinIO), `--profile mock` (mock model API).
59
59
 
60
- See [docs/deployment.md](docs/deployment.md) for production hardening, GPU workers, backups, and upgrades.
60
+ See [docs/deployment.md](docs/deployment.md) for production hardening, backups, and upgrades.
61
61
 
62
62
  ## ✨ What You Can Do
63
63
 
@@ -84,7 +84,7 @@ Browser → Django/Gunicorn (:7860)
84
84
 
85
85
  - [Architecture](docs/architecture.md) — system design, service boundaries, deployment topology
86
86
  - [Domain Model](docs/domain-model.md) — scenarios, scenario sets, audit runs, immutability invariants
87
- - [Deployment](docs/deployment.md) — Docker Compose, production hardening, GPU workers, upgrades
87
+ - [Deployment](docs/deployment.md) — Docker Compose, production hardening, upgrades
88
88
 
89
89
  ## 🤝 Contributing
90
90
 
@@ -9,7 +9,7 @@ The production platform must be:
9
9
 
10
10
  - self-hostable with Docker Compose
11
11
  - durable across web/API and worker restarts
12
- - safe for long-running and GPU-backed jobs
12
+ - safe for long-running audit jobs
13
13
  - observable end to end
14
14
  - reproducible at the audit level
15
15
  - maintainable by multiple developers
@@ -39,10 +39,8 @@ flowchart TD
39
39
  Web --> Obj[(S3/MinIO Object Storage)]
40
40
  Web --> WF[Workflow/Queue System]
41
41
  WF --> CPU[CPU Workers]
42
- WF --> GPU[GPU Workers]
43
42
  WF --> APIWorkers[External API Workers]
44
43
  CPU --> SA[SimpleAudit Engine]
45
- GPU --> SA
46
44
  APIWorkers --> SA
47
45
  SA --> Obj
48
46
  SA --> PG
@@ -120,20 +118,16 @@ to credential material inside the worker environment.
120
118
  Workers register labels/capabilities:
121
119
 
122
120
  - `cpu`
123
- - `gpu`
124
- - `h200`
125
- - `gh200`
126
121
  - `external-api`
127
122
  - `local-inference`
128
123
 
129
- Jobs request required capabilities. The web server never needs GPU access.
124
+ Jobs request required capabilities. The web server never needs direct model access.
130
125
 
131
126
  Concurrency limits are configured per pool:
132
127
 
133
128
  - global max concurrent audits
134
129
  - per-run max concurrent scenarios
135
130
  - per-model endpoint rate limit where known
136
- - GPU worker slot count
137
131
 
138
132
  ### 4.4 Idempotency
139
133
 
@@ -334,8 +328,7 @@ docker compose
334
328
  ├── postgres
335
329
  ├── minio
336
330
  ├── hatchet-server
337
- ├── hatchet-worker-cpu
338
- ├── hatchet-worker-gpu # optional, same host or remote
331
+ ├── hatchet-worker
339
332
  ├── web
340
333
  └── collector # optional
341
334
  ```
@@ -21,21 +21,22 @@ After startup, the user should get:
21
21
  - PostgreSQL initialized/migrated
22
22
  - object storage bucket initialized
23
23
  - workflow server available to workers
24
- - CPU worker running
25
- - optional GPU worker running if hardware/config present
24
+ - worker running
26
25
  - health checks passing
27
26
  - documented first-run bootstrap command
28
27
 
29
28
  No undocumented manual database setup is allowed.
30
29
 
31
- First-run bootstrap:
30
+ First-run bootstrap (idempotent, runs automatically on container start):
32
31
 
33
- 1. create initial admin user from environment or management command
34
- 2. create default project
35
- 3. assign admin user to default project
32
+ 1. create the platform owner account (`BOOTSTRAP_USERNAME`, default `studio`) with `is_staff=True` — not a Django superuser
33
+ 2. create the Default workspace
34
+ 3. grant the owner an ADMIN membership in the Default workspace
36
35
  4. optionally import a starter scenario pack into that project
37
36
  5. print or log next steps for model endpoint registration
38
37
 
38
+ Configuration via environment variables: `BOOTSTRAP_USERNAME`, `BOOTSTRAP_EMAIL`, `BOOTSTRAP_PASSWORD`, `BOOTSTRAP_PROJECT_NAME`.
39
+
39
40
  Bootstrap must be idempotent and must not require hand-editing SQL.
40
41
 
41
42
  ## 2. Canonical components
@@ -46,8 +47,7 @@ Bootstrap must be idempotent and must not require hand-editing SQL.
46
47
  | PostgreSQL | authoritative state | `postgres` |
47
48
  | MinIO/S3 | artifacts | `minio` |
48
49
  | Hatchet server | durable workflow/queue | `hatchet-server` |
49
- | CPU worker | runs audits on CPU/API models | `worker-cpu` |
50
- | GPU worker | runs local/GPU inference | `worker-gpu` optional |
50
+ | Worker | runs audits (CPU + external API models) | `worker` |
51
51
  | OTel collector | traces/logs/metrics | optional |
52
52
  | Langfuse | LLM observability | optional |
53
53
 
@@ -81,7 +81,7 @@ Requirements:
81
81
 
82
82
  - isolated data
83
83
  - same migration path as production
84
- - access to representative GPU/API endpoints if available
84
+ - access to representative model API endpoints if available
85
85
 
86
86
  ### 3.3 Production
87
87
 
@@ -345,8 +345,7 @@ Components:
345
345
  - PostgreSQL
346
346
  - MinIO/S3
347
347
  - Hatchet server
348
- - CPU worker
349
- - optional GPU worker
348
+ - worker
350
349
  - web/API
351
350
  - optional OTel collector/Langfuse
352
351
 
@@ -358,7 +357,7 @@ Components:
358
357
 
359
358
  - PostgreSQL
360
359
  - Hatchet server
361
- - CPU worker
360
+ - worker
362
361
  - web/API
363
362
  - local volume or managed object storage compatible with the same artifact interface
364
363
 
@@ -371,13 +370,11 @@ PostgreSQL, authentication, and object-storage-compatible artifact persistence.
371
370
  Single host:
372
371
 
373
372
  - scale worker concurrency within host resources
374
- - run GPU worker only if GPU available
375
373
 
376
374
  Multi host:
377
375
 
378
376
  - remote workers point to same Postgres/MinIO/Hatchet
379
377
  - add labels for capabilities
380
- - no web server access to GPU required
381
378
  - consider separate network segmentation for workers
382
379
 
383
380
  Do not scale horizontally until single-host bottlenecks are measured.
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "simpleaudit-studio"
7
- version = "0.2.2"
7
+ version = "0.2.3"
8
8
  description = "Production AI model audit platform — one-liner demo mode via uvx"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -100,7 +100,7 @@ def main() -> None:
100
100
  time.sleep(1)
101
101
 
102
102
  username = os.environ.get("BOOTSTRAP_USERNAME", "studio")
103
- password = os.environ.get("BOOTSTRAP_PASSWORD", "admin12345")
103
+ password = os.environ.get("BOOTSTRAP_PASSWORD", "admin123")
104
104
 
105
105
  print("┌─────────────────────────────────────────────────────────┐")
106
106
  print("│ │")
@@ -142,7 +142,7 @@ def _seed_demo_data() -> None:
142
142
  # Respect env vars (set by Dockerfile for HF Space, or defaults for local)
143
143
  username = os.environ.get("BOOTSTRAP_USERNAME", "studio")
144
144
  email = os.environ.get("BOOTSTRAP_EMAIL", "admin@localhost")
145
- password = os.environ.get("BOOTSTRAP_PASSWORD", "admin12345")
145
+ password = os.environ.get("BOOTSTRAP_PASSWORD", "admin123")
146
146
  project_name = os.environ.get("BOOTSTRAP_PROJECT_NAME", "Demo Project")
147
147
 
148
148
  user, project = bootstrap_admin_and_default_project(