Warns a member at 80% of their monthly cap and again when it is exhausted, using the welcome email's template shell. Spend and budget come from LiteLLM's Postgres, the same source the dashboard shows. One notice per level per budget cycle. BUDGET_NOTICES=off|dryrun|on gates sending; POST /admin/budget-notices previews at any time and refuses to send unless the flag is on. Rides the existing sweep cron, wrapped so it cannot break reconciliation.
36 lines
972 B
JSON
36 lines
972 B
JSON
{
|
|
"id": "coop.inference.member-portal",
|
|
"title": "Member Portal",
|
|
"author": "Inference Cooperative",
|
|
"description": "Membership middleware: syncs Open Collective members with Cloudron users and LiteLLM keys, and injects per-member keys into inference requests.",
|
|
"version": "0.1.0",
|
|
"healthCheckPath": "/health",
|
|
"httpPort": 8000,
|
|
"addons": {
|
|
"localstorage": {},
|
|
"oidc": {
|
|
"loginRedirectUri": "/",
|
|
"logoutRedirectUri": "/"
|
|
},
|
|
"sendmail": {},
|
|
"scheduler": {
|
|
"membership_sweep": {
|
|
"schedule": "0 3 * * *",
|
|
"command": "/app/code/sweep.sh"
|
|
},
|
|
"rag_refresh": {
|
|
"schedule": "30 3 * * *",
|
|
"command": "/app/code/rag_refresh.py"
|
|
},
|
|
"metrics_snapshot": {
|
|
"schedule": "15 3 * * *",
|
|
"command": "/app/code/metrics_snapshot.py"
|
|
}
|
|
}
|
|
},
|
|
"manifestVersion": 2,
|
|
"website": "https://inference.coop",
|
|
"contactEmail": "info@inference.coop",
|
|
"dockerImage": "registry.inference.coop/co-op/member-portal:20261031-76d59b3"
|
|
}
|