Skip to content
Closed
Show file tree
Hide file tree
Changes from 81 commits
Commits
Show all changes
141 commits
Select commit Hold shift + click to select a range
482fe78
chore: absorb transient Chrome hangs in browser tests (#215)
sadsfae Oct 5, 2026
71aada2
feat: reuse compatible GPU drivers during setup (#218)
grafuls Oct 7, 2026
0eabc71
0.2.0-dev.1
Oct 7, 2026
c55c4cd
chore: refresh uv.lock after version bump
web-flow Oct 7, 2026
e35eae3
Publish engine runtimes and setup bundles transactionally (#219)
grafuls Oct 7, 2026
2ebf719
feat: reuse verified llama.cpp builds with bounded source fallback
grafuls Oct 8, 2026
03736a1
fix: address llama.cpp artifact review findings
grafuls Oct 8, 2026
556680c
fix: address native CPU and artifact runtime review
grafuls Oct 8, 2026
0402a24
0.2.0-dev.2
Oct 8, 2026
d501b3f
chore: refresh uv.lock after version bump
web-flow Oct 8, 2026
b41d846
feat: add user leaderboard and token dashboard
sadsfae Oct 8, 2026
ecd768b
0.2.0-dev.3
Oct 8, 2026
4f2d2ef
chore: refresh uv.lock after version bump
web-flow Oct 8, 2026
6c66d25
feat: auto-rediscover self-setup model drift in health cycle
kambiz-aghaiepour Oct 8, 2026
5a85b38
0.2.0-dev.4
Oct 9, 2026
69de6a4
chore: refresh uv.lock after version bump
web-flow Oct 9, 2026
9e5339c
feat: power on new nodes via redfish and resolve bmc creds per lab (#…
sadsfae Oct 9, 2026
1c946c0
0.2.0-dev.5
Oct 9, 2026
6d1eff9
chore: refresh uv.lock after version bump
web-flow Oct 9, 2026
435077a
feat: opt-in local OIDC auth provider (RFE #230)
kambiz-aghaiepour Oct 9, 2026
f41abf6
style(tests): ruff format for local OIDC provider change
kambiz-aghaiepour Oct 9, 2026
13b3906
feat: Local Login merges the admin and local oauth sign-in paths
kambiz-aghaiepour Oct 9, 2026
cbded89
fix: address local OIDC provider review findings
kambiz-aghaiepour Oct 10, 2026
02a133d
fix: harden the issuer migration crash recovery
kambiz-aghaiepour Oct 10, 2026
6894d5b
docs: warn that a global SSL_CERT_FILE replaces the trust store
kambiz-aghaiepour Oct 10, 2026
cee2e76
test: satisfy strict mypy for the new auth tests
kambiz-aghaiepour Oct 10, 2026
db41610
0.2.0-dev.6
Oct 13, 2026
6b04141
chore: refresh uv.lock after version bump
web-flow Oct 13, 2026
08842a6
feat: wait for QUADS to finish releasing a host before placing on it
sjug Oct 12, 2026
34fe664
fix: require quads.stale_after_seconds to be at least twice poll_inte…
sjug Oct 13, 2026
e3c4ab8
0.2.0-dev.7
Oct 13, 2026
cf8441a
chore: refresh uv.lock after version bump
sadsfae Oct 13, 2026
982deb9
fix: enforce the stale bound only where placement runs
sadsfae Oct 13, 2026
f747f47
0.2.0-dev.8
Oct 13, 2026
c5f43d2
chore: refresh uv.lock after version bump
web-flow Oct 13, 2026
a56b1f1
feat: size automatic vLLM launches from available memory
grafuls Oct 13, 2026
2f3e0e2
fix(vllm): address review on memory-aware sizing
grafuls Oct 13, 2026
66b65fe
fix(vllm): address the second review round on memory-aware sizing
grafuls Oct 13, 2026
e0c53b0
test: widen timing-sensitive liveness timeouts
grafuls Oct 13, 2026
45faef2
fix(vllm): keep the retried plan reason consistent with the effective…
grafuls Oct 14, 2026
a647d5e
0.2.0-dev.9
Oct 14, 2026
33ef768
chore: refresh uv.lock after version bump
web-flow Oct 14, 2026
9c16bde
fix: price token estimates at Sonnet 5 rates
sadsfae Oct 14, 2026
09b3818
0.2.0-dev.10
Oct 14, 2026
bf62aa7
chore: refresh uv.lock after version bump
web-flow Oct 14, 2026
e14cc11
feat(provisioning): resume verified stages and retry transient failures
grafuls Oct 14, 2026
87d41b3
fix: document new setup settings and satisfy strict typing
grafuls Oct 14, 2026
337837e
fix(provisioning): address setup resume review feedback
grafuls Oct 14, 2026
dc93cd4
fix(provisioning): address second review round
grafuls Oct 14, 2026
196add1
fix(provisioning): retry bare 5xx download failures
grafuls Oct 14, 2026
88c6091
0.2.0-dev.11
Oct 14, 2026
abcf1f4
chore: refresh uv.lock after version bump
web-flow Oct 14, 2026
3b7fcc4
chore: stop diagnostics tests flaking under load
sadsfae Oct 14, 2026
1473fdf
feat: sort the token and usage tables by column
sadsfae Oct 14, 2026
9362050
0.2.0-dev.12
Oct 15, 2026
564ff60
chore: refresh uv.lock after version bump
web-flow Oct 15, 2026
d1bcb53
feat: copy the user's own token from the pages
sadsfae Oct 15, 2026
8ef4a19
0.2.0-dev.13
Oct 15, 2026
a1328e8
chore: refresh uv.lock after version bump
web-flow Oct 15, 2026
120ec7c
fix: unify the account cluster across the top bars
sadsfae Oct 15, 2026
28754ad
0.2.0-dev.14
Oct 15, 2026
554942c
chore: refresh uv.lock after version bump
web-flow Oct 15, 2026
56b8c40
fix: run the chat playground on the user's token
sadsfae Oct 15, 2026
b511d28
0.2.0-dev.15
Oct 15, 2026
2c9e354
chore: refresh uv.lock after version bump
web-flow Oct 15, 2026
a15b4c7
fix: guard Copr publishes against duplicate NVRs
sadsfae Oct 15, 2026
0f9fb85
0.2.0-dev.16
Oct 15, 2026
42d7896
chore: refresh uv.lock after version bump
web-flow Oct 15, 2026
814ac1d
feat: link the release RPM packages in the release notes
sadsfae Oct 15, 2026
37655ef
0.2.0-dev.17
Oct 15, 2026
5c5a405
chore: refresh uv.lock after version bump
web-flow Oct 15, 2026
380ffca
chore: reconcile development with main
sadsfae Oct 15, 2026
0df4381
fix: tell a Copr outage apart from missing dependency RPMs
sadsfae Oct 15, 2026
6f4060f
0.2.0-dev.18
Oct 15, 2026
14c1f87
chore: refresh uv.lock after version bump
web-flow Oct 15, 2026
8cea3e1
fix: address 0.2.0 roll-up review findings
sadsfae Oct 16, 2026
5ab36c8
0.2.0-dev.19
Oct 16, 2026
f79e442
chore: refresh uv.lock after version bump
web-flow Oct 16, 2026
52e17b7
fix: guard the same-issuer refresh and check the ID-token audience
sadsfae Oct 16, 2026
6d7c8f4
0.2.0-dev.20
Oct 16, 2026
2ce74f2
chore: refresh uv.lock after version bump
web-flow Oct 16, 2026
a6c1445
fix: gate the Google sign-in option on its provider
sadsfae Oct 16, 2026
ce03e0e
0.2.0-dev.21
Oct 16, 2026
19a6a17
chore: refresh uv.lock after version bump
web-flow Oct 16, 2026
13eee30
fix: give admins the leaderboard ranking
sadsfae Oct 16, 2026
c63cf8e
0.2.0-dev.22
Oct 16, 2026
9654394
chore: refresh uv.lock after version bump
web-flow Oct 16, 2026
49f53af
fix: drop the non-admin fleet client path
sadsfae Oct 16, 2026
33f1004
0.2.0-dev.23
Oct 16, 2026
154971a
chore: refresh uv.lock after version bump
web-flow Oct 16, 2026
ff311dd
feat: show token cost on the leaderboard
sadsfae Oct 19, 2026
fec45bb
0.2.0-dev.24
Oct 20, 2026
bfd1ee4
chore: refresh uv.lock after version bump
web-flow Oct 20, 2026
cca9722
feat: add admin toggle to include admins in usage leaderboard (fixes …
kambiz-aghaiepour Oct 19, 2026
f2f4d4c
fix: harden leaderboard toggle, cover review criteria, update docs (r…
kambiz-aghaiepour Oct 20, 2026
b594513
fix: revert toggle control on failed fetch; pin request-id guard in h…
kambiz-aghaiepour Oct 20, 2026
60ce3c9
fix: restore rendered scope on toggle failure; cover double-failure d…
kambiz-aghaiepour Oct 20, 2026
abb6159
fix: render last successful response and guard stale failure revert (…
kambiz-aghaiepour Oct 20, 2026
991bcbb
test: exercise the stale-failure guard with overlapping in-flight tog…
kambiz-aghaiepour Oct 20, 2026
f28b736
fix: sync leaderboard scope and cover local-admin widen
sadsfae Oct 20, 2026
8d0fb24
0.2.0-dev.25
Oct 20, 2026
19e9a13
chore: refresh uv.lock after version bump
web-flow Oct 20, 2026
c2592fd
fix: ignore stale leaderboard load failures
sadsfae Oct 20, 2026
b75ebd5
0.2.0-dev.26
Oct 20, 2026
f2fddbd
chore: refresh uv.lock after version bump
web-flow Oct 20, 2026
23a7d49
feat(provisioning): verify vLLM identity and inference before routing
grafuls Oct 20, 2026
4aca3c0
fix(provisioning): tighten vLLM serving gate evidence
grafuls Oct 21, 2026
87f9f22
fix(provisioning): close vLLM review nits
grafuls Oct 21, 2026
adb94d1
docs(provisioning): clarify vLLM probe timeout scope
grafuls Oct 22, 2026
a758701
test(provisioning): keep failed-store guard meaningful
grafuls Oct 22, 2026
cc97cb4
0.2.0-dev.27
Oct 22, 2026
98c1476
chore: refresh uv.lock after version bump
web-flow Oct 22, 2026
ffebc31
docs: record #121 acceptance status and split fleet validation (#277)…
grafuls Oct 22, 2026
e249d62
docs: document the development-to-main release cycle
sadsfae Oct 22, 2026
080f5c5
fix: surface provisioning task failures and available-host actions
sadsfae Oct 27, 2026
9f1879e
fix: allow teardown of unregistered stuck tasks
sadsfae Oct 27, 2026
4637c54
fix: keep provisioning state and teardown labels consistent
sadsfae Oct 27, 2026
1f2f344
fix: require teardown after a failed teardown
sadsfae Oct 27, 2026
ee5addc
fix: name the prior provisioning task explicitly
sadsfae Oct 27, 2026
499d43d
fix: keep teardown engine and recovery guidance honest
sadsfae Oct 27, 2026
ba7ebc1
test: allow slower CI for relaunch transitions
sadsfae Oct 27, 2026
38cdb87
0.2.0-dev.28
Oct 27, 2026
0914035
chore: refresh uv.lock after version bump
web-flow Oct 27, 2026
a29f8a9
fix: ignore benign journal and split-log issues
sadsfae Oct 27, 2026
89354fd
fix: keep multibyte log splits out of truncation
sadsfae Oct 27, 2026
9e91f29
fix: treat journal parse failure as an issue
sadsfae Oct 27, 2026
21eca71
fix: reconnect logs for a new task after a terminal stream
sadsfae Oct 27, 2026
4bc55a5
fix: switch log stream when a new task replaces an open stream
sadsfae Oct 27, 2026
28f1c11
fix: wait for the new task attempt before opening logs
sadsfae Oct 27, 2026
8e62ab7
feat: delete cached models from the admin UI
grafuls Oct 27, 2026
aebabc9
0.2.0-dev.29
Oct 27, 2026
4fd6b06
chore: refresh uv.lock after version bump
web-flow Oct 27, 2026
557d17b
fix: show non-admin users their profile
sadsfae Oct 27, 2026
4bf40c9
test: cover profile token capability
sadsfae Oct 27, 2026
7f7d493
fix: address profile review findings
sadsfae Oct 27, 2026
b586d53
fix: correct onboarding and leaderboard navigation
sadsfae Oct 27, 2026
6a16da4
fix: avoid dead home link for full-access users
sadsfae Oct 27, 2026
18804af
0.2.0-dev.30
Oct 27, 2026
2d49d10
chore: refresh uv.lock after version bump
web-flow Oct 27, 2026
5e13015
chore: document linear sync release flow
sadsfae Oct 28, 2026
ac59e50
chore: preserve superseded sync PR records
sadsfae Oct 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 41 additions & 7 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,9 @@ INFERENCE_PROXY_ETCD__ENDPOINTS=["http://localhost:2379"]
# Emails whose tokens are exempt from endpoint scoping and owner isolation
# (and from the SSO whitelist gate); they may pin tokens to any endpoint.
# INFERENCE_PROXY_AUTH__ADMIN_ONLY_TOKENS_FULL_ACCESS=["ops@example.com"]
# Grants from the list above apply to Google accounts only; the local OIDC
# provider must be granted per issuer (its "iss" URL) by key, e.g.:
# INFERENCE_PROXY_AUTH__ADMIN_ONLY_TOKENS_FULL_ACCESS_BY_ISSUER={"https://inference-proxy.localdomain/oidc":["ops@example.com"]}

# Google OAuth (set all three credentials to enable)
# Set up an OAuth 2.0 client at https://console.cloud.google.com/apis/credentials.
Expand Down Expand Up @@ -126,12 +129,12 @@ INFERENCE_PROXY_ETCD__ENDPOINTS=["http://localhost:2379"]
# INFERENCE_PROXY_DASHBOARD__POLL_INTERVAL=10

# Premium-equivalent pricing for token budget estimates (token dashboards)
# Rates are USD per million tokens. Defaults track Anthropic Claude Opus-class
# 1M-context pricing; the estimate is what the recorded usage would have cost
# at this rate, not a cash ledger.
# INFERENCE_PROXY_PRICING__INPUT_RATE_PER_MTOK=5.0
# INFERENCE_PROXY_PRICING__OUTPUT_RATE_PER_MTOK=25.0
# INFERENCE_PROXY_PRICING__MODEL_LABEL=claude-opus-4.8
# Rates are USD per million tokens. Defaults track the published Anthropic
# Claude Sonnet MSRP (Sonnet 5, 1M context at standard pricing); the estimate
# is what the recorded usage would have cost at this rate, not a cash ledger.
# INFERENCE_PROXY_PRICING__INPUT_RATE_PER_MTOK=2.0
# INFERENCE_PROXY_PRICING__OUTPUT_RATE_PER_MTOK=10.0
# INFERENCE_PROXY_PRICING__MODEL_LABEL=claude-sonnet-5

# SSH (node provisioning access)
# INFERENCE_PROXY_SSH__KEY_PATH=~/.ssh/id_rsa
Expand All @@ -147,6 +150,7 @@ INFERENCE_PROXY_ETCD__ENDPOINTS=["http://localhost:2379"]
# INFERENCE_PROXY_PROVISIONING__MIN_DISK_GB=20
# INFERENCE_PROXY_PROVISIONING__DRAIN_TIMEOUT=30
# INFERENCE_PROXY_PROVISIONING__SCRIPTS_DIR=auto-vllm
# INFERENCE_PROXY_PROVISIONING__GENERATION_ROOT=/opt/qiip
# INFERENCE_PROXY_PROVISIONING__BOOT_WAIT_TIMEOUT=300
# INFERENCE_PROXY_PROVISIONING__BOOT_WAIT_INTERVAL=10
# INFERENCE_PROXY_PROVISIONING__MAX_CONCURRENT_PROVISIONS=32
Expand All @@ -172,24 +176,51 @@ INFERENCE_PROXY_ETCD__ENDPOINTS=["http://localhost:2379"]
# INFERENCE_PROXY_PROVISIONING__DIAGNOSTICS_TIMEOUT=25
# INFERENCE_PROXY_PROVISIONING__DIAGNOSTICS_SOURCE_MAX_BYTES=16384
# INFERENCE_PROXY_PROVISIONING__NFS_MOUNT_POINT=/srv/hf-cache
# Replacement artifact; compatible working drivers are reused after CUDA proof.
# INFERENCE_PROXY_PROVISIONING__NVIDIA_DRIVER_VERSION=580.126.09
# INFERENCE_PROXY_PROVISIONING__NVIDIA_DRIVER_SHA256=4cac53e48f8adff661d47c8788ed24059a248c9fd8098ceafd088a498986ec26
# llama.cpp is compiled for the managed node's NVIDIA GPU from verified source.
# llama.cpp reuses sealed builds or a pinned catalog, with verified source fallback.
# INFERENCE_PROXY_PROVISIONING__LLAMACPP_VERSION=v0.4.1
# INFERENCE_PROXY_PROVISIONING__LLAMACPP_SHA256=ef3d5b1907a391500ae11b5e61a8e2022e0deaac9790899cad9c4e02f03bfb9a
# INFERENCE_PROXY_PROVISIONING__LLAMACPP_SOURCE_URL=https://github.com/ggml-org/llama.cpp/archive/refs/tags/{version}.tar.gz
# Set both catalog values to enable downloads of verified CUDA builds.
# INFERENCE_PROXY_PROVISIONING__LLAMACPP_ARTIFACT_CATALOG_URL=https://artifacts.example/llamacpp/catalog.json
# INFERENCE_PROXY_PROVISIONING__LLAMACPP_ARTIFACT_CATALOG_SHA256=<sha256-of-catalog.json>
# INFERENCE_PROXY_PROVISIONING__LLAMACPP_ALLOW_SOURCE_BUILD=true
# Upper bound on compiler jobs; 0 selects automatically from available CPU/RAM.
# INFERENCE_PROXY_PROVISIONING__LLAMACPP_BUILD_JOBS=0
# INFERENCE_PROXY_PROVISIONING__LLAMACPP_SETUP_TIMEOUT=7200
# INFERENCE_PROXY_PROVISIONING__LLAMACPP_FIT_TARGET_MIB=512
# Bounded number of automatic vLLM launches per setup, including the initial
# memory-aware plan (N allows N-1 recognized-OOM retries); 1-5.
# INFERENCE_PROXY_PROVISIONING__VLLM_MEMORY_RETRY_MAX_ATTEMPTS=4
# Total deadline for one vLLM setup run (dependency resolution and venv sync).
# INFERENCE_PROXY_PROVISIONING__VLLM_SETUP_TIMEOUT=3600
# Bounded automatic retry of transient download/repository/SSH failures. Only
# recognized transient failures retry; configuration, unsupported-hardware, and
# maintenance failures stop immediately.
# INFERENCE_PROXY_PROVISIONING__STAGE_RETRY_MAX_ATTEMPTS=3
# INFERENCE_PROXY_PROVISIONING__STAGE_RETRY_BASE_DELAY=5.0
# INFERENCE_PROXY_PROVISIONING__STAGE_RETRY_MAX_DELAY=120.0
# INFERENCE_PROXY_PROVISIONING__STAGE_RETRY_JITTER=0.25

# QUADS (set BASE_URL to enable integration)
# INFERENCE_PROXY_QUADS__BASE_URL=http://quads.example.com
# Required with BASE_URL: IANA timezone used by the QUADS server's local clock.
# INFERENCE_PROXY_QUADS__SERVER_TIMEZONE=America/New_York
# INFERENCE_PROXY_QUADS__TIMEOUT=10.0
# Must be at least 1; the poller sleeps this long after each poll finishes.
# INFERENCE_PROXY_QUADS__POLL_INTERVAL=300
# INFERENCE_PROXY_QUADS__VERIFY_SSL=true
# Must be at least 1; the schedule enforcer sleeps this long after each check.
# INFERENCE_PROXY_QUADS__SCHEDULE_CHECK_INTERVAL=300
# Must be at least 1; placement, manual setup and the schedule enforcer need
# a host free for the whole window.
# INFERENCE_PROXY_QUADS__SCHEDULE_LOOKAHEAD_HOURS=24
# Placement makes no decision from a QUADS inventory snapshot older than this.
# Must be at least 60; where placement runs it must also be at least twice
# POLL_INTERVAL, checked at startup.
# INFERENCE_PROXY_QUADS__STALE_AFTER_SECONDS=900

# Automatic placement of catalog llama.cpp profiles on free single-GPU hosts.
# Needs QUADS. Enabled by default; set false to opt out.
Expand Down Expand Up @@ -239,3 +270,6 @@ INFERENCE_PROXY_HUGGINGFACE__CACHE_DIR=/data/huggingface
# INFERENCE_PROXY_REDFISH__POWER_POLL_TIMEOUT=60.0
# INFERENCE_PROXY_REDFISH__POWER_POLL_INTERVAL=5.0
# INFERENCE_PROXY_REDFISH__VERIFY_SSL=false
# Per-lab/per-host BMC credential overrides are a nested map; prefer setting
# them in conf/qiip.yml (redfish.bmc_credentials). Via env it must be JSON:
# INFERENCE_PROXY_REDFISH__BMC_CREDENTIALS={"labs": {"rdu2.scalelab": {"username": "root", "password": "mypass1"}}}
Loading
Loading