Busabase
Busabase is an open-source (MIT) database and workspace for AI agents — data, docs, skills, and apps in one place. Run it locally, self-host it inside your network, or use Busabase Cloud, and turn age
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Open-source reliability engineering — fit life distributions, build reliability block diagrams, and optimise maintenance. Self-hostable (AGPL-3.0).
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Open-source reliability engineering. Fit life distributions to failure
data, build reliability block diagrams, and turn fitted models into maintenance
decisions — in one self-hostable web app.
A FastAPI backend does the statistics with
SurPyval and
RePyability and serves a
React single-page frontend, so the whole app runs on a single port.
Automate it: the ingestion API pushes meter readings,
inspection measurements, and new failure data from scripts and cron jobs. Fit
a model in a notebook and push it from SurPyval
(pip install reliafy-client).查看完整 README ↗Open-source reliability engineering. Fit life distributions to failure data, build reliability block diagrams, and turn fitted models into maintenance decisions — in one self-hostable web app.
A FastAPI backend does the statistics with SurPyval and RePyability and serves a React single-page frontend, so the whole app runs on a single port.
Automate it: the ingestion API pushes meter readings,
inspection measurements, and new failure data from scripts and cron jobs. Fit
a model in a notebook and push it from SurPyval
(pip install reliafy-client).
Questions, bug reports and suggestions are welcome as GitHub issues. What's shipped is on the What's new page.
docker compose up --build
Open http://localhost:8000. That's it — no account or login (the instance is yours, in single-user mode), data persists in a Docker volume, and a few sample datasets, models, and an example RBD are pre-seeded so there's something to explore.
| Variable | Default | Purpose |
|---|---|---|
AUTH_DISABLED | (unset) | true = single-user mode: no login, every request is one fixed local user. The supported mode for self-hosting. |
DEV_USER_ID | dev-user | The single user's id in single-user mode. |
MONGODB_URI | (unset) | MongoDB connection string. docker-compose wires this to its bundled MongoDB. Unset/unreachable ⇒ automatic fallback to an in-memory simulator (data not persisted; GET /api/health reports which). |
MONGODB_DB | reliafy | Database name. |
SEED_SAMPLES | true | Seed shared sample datasets/models/RBDs on startup (idempotent). |
PORT | 8000 | Port the server listens on. |
ANTHROPIC_API_KEY / OPENAI_API_KEY | (unset) | Optional: set your own provider key to enable the built-in AI assistant on your instance (with AI_PROVIDER = anthropic (default) or openai, and optional AI_MODEL). Without a key the assistant is hidden. |
The frontend build has one flag: VITE_AUTH_DISABLED=true (a Docker build arg
in docker-compose) bakes single-user mode into the bundle — no login page and
no marketing pages, straight into the app.
python3.11 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
AUTH_DISABLED=true uvicorn backend.main:app --port 8000 --reload
Hot-reload dev server (proxies /api to the backend on :8000;
frontend/.env.development already sets single-user mode):
cd frontend
npm install
npm run dev
Or a production build served by the backend on one port: npm run build, then
open http://localhost:8000.
pip install pytest pillow-heif # pillow-heif writes the tests' HEIC photos
pytest backend/tests
The mapping mirrors SurPyval's data model (surpyval.utils.xcnt_handler):
| Field | Meaning |
|---|---|
x | Observed values (exact / censored) |
c | Censor flag per row: 0 observed, 1 right, -1 left, 2 interval |
n | Count of observations per row (positive integer) |
xl | Interval lower bound (used with xr) |
xr | Interval upper bound (used with xl) |
tl | Left truncation bound (-inf ⇒ untruncated) |
tr | Right truncation bound (+inf ⇒ untruncated) |
Rules enforced on both the frontend and backend:
x or the xl/xr interval pair — never both.xl and xr must be supplied together.c, n, tl, tr are optional modifiers.Left/interval-censored data is plotted with SurPyval's Turnbull estimator.
Datasets, models, and RBDs are MongoDB documents (uploaded CSV bytes are stored inline, content-addressed, on the dataset document). Saving a model stores the fit recipe plus cached results, so reopening is instant; SurPyval models can't be serialised, so covariate evaluation on a reopened proportional-hazards model re-fits on demand from the dataset + spec.
The hosted version at Reliafy Cloud adds what only makes sense hosted: user accounts (Firebase sign-in), a Pro plan, a metered AI assistant on prepaid credits, team workspaces (view free, edit with Pro), and view-only sharing of any analysis with other accounts. The cloud code lives in this same repository — GitLab-style, one codebase — and is dormant unless configured: without Firebase/Stripe/AI env vars, none of it runs. Multi-user env reference for operators:
| Variable | Purpose |
|---|---|
GOOGLE_CLOUD_PROJECT / FIREBASE_PROJECT_ID | Firebase project whose ID tokens are accepted (multi-user mode). |
VITE_FIREBASE_* | Public Firebase web config baked into the frontend build (frontend/.env.production). |
BILLING_ENABLED, STRIPE__API_KEY, STRIPE__WEBHOOK_SECRET, STRIPE__PRICE_ID | Plans, credit packs, and the Stripe webhook. |
AI_PROVIDER, AI_MODEL, AI_MARKUP | The metered assistant's provider/model/markup. |
PRO_MONTHLY_CREDIT_CENTS | AI credit included with each month of Pro (granted per paid invoice; default 1000). |
ADMIN_EMAILS | Comma-separated operator emails with full access regardless of payment (no plan caps, AI not credit-checked). |
PUSHOVER_TOKEN, PUSHOVER_USER | Operator push notifications (new signups, crashes) via Pushover. Unset → falls back to email, then to a log line. |
PUSH_ERROR_ALERTS | Push an alert when the server hits an unexpected error (default on wherever Pushover is configured). Throttled: same fault once per 30 min, 8 per hour. Set false to keep a dev machine quiet. |
SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASS, EMAIL_FROM | Outbound email for team invites and share notifications. Unset → every send is a logged no-op. |
GET /api/config — deployment capabilities {auth, ai, billing} (public).GET /api/health — liveness + storage mode (public).GET /api/distributions — {id, name, covariates} models that can be fit.POST /api/columns — multipart file; returns {columns, preview, n_rows}.POST /api/fit/{distribution} — multipart file plus any of the column
fields x, c, n, xl, xr, tl, tr; returns parameters + probability-plot data.POST /api/models — fit and save; plus GET/PATCH/DELETE /api/models/{id} and POST /api/models/{id}/evaluate.GET|POST /api/datasets, GET|DELETE /api/datasets/{id}.GET|POST /api/rbds, GET|DELETE /api/rbds/{id},
POST /api/rbds/analyze, POST /api/rbds/validate.Reliafy is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0) — see LICENSE. You're free to use, modify, and self-host it; if you offer a modified version as a network service, the AGPL requires you to publish your modifications. Contributions are welcome — see CONTRIBUTING.md.