AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기IBM Bob 2.0 — RAG Evolution Factory. An IBM Bob-powered autonomous engineering system that creates, evaluates, diagnoses and improves RAG agents through a closed-loop workflow. 4 MCP tools: FACTORY, GUARDIAN, AUTOPSY, CHANGELAB. Live: https://rag-saas-platform-rho.vercel.app
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
IBM BOB 2.0 — RAG EVOLUTION FACTORY
An IBM Bob-powered autonomous engineering system that creates, evaluates, diagnoses and improves RAG agents through a closed-loop workflow.
IBM Bob is the autonomous engineering brain.
RAG Evolution Factory is the orchestration system.
The RAG platform is the real environment Bob operates, measures and evolves.
MCP is the control interface between Bob and the platform.
🌐 Live demo: https://rag-saas-platform-rho.vercel.app
🔧 Live API: https://rag-saas-api-sjsm.onrender.com
📖 Submission doc: docs/ibm_bob_2/SUBMISSION.mdREADME 전문 보기 ↗A multi-tenant platform for building, evaluating and operating retrieval-augmented (RAG) assistants on your own documents — with verifiable citations, strict tenant isolation, built-in cost control, and a quality loop that measures every change instead of guessing.
🌐 Live app: https://rag-saas-platform-rho.vercel.app 🔧 Live API: https://rag-saas-api-sjsm.onrender.com
The supplied read-only observation of the remote general-dotenv database
is revision 0130, postgres/BYPASSRLS, 178 public tables (12 without RLS),
zero policies, no workspaces.description, pgvector 0.8.2. A complete
custom pg_dump backup was taken before changes (local, Git-ignored;
restore unverified). The assistant tool refused production migration
execution. The operator must run
.venv\Scripts\python.exe -m alembic upgrade head (0131 then 0132)
BEFORE deploying code. RLS without policies does not block the bypass
API role and does not prove runtime RLS isolation. Historical test data
(63/71 users @example.com; 1523/1576 organizations named "test", September
11 to October 2) has a proposed, NOT executed cleanup.
Deployment settings: DISCORD_GATEWAY_SHARED_SECRET (mandatory X-Gateway-Secret for Discord gateway messages); TEAMS_BOT_ID (Microsoft token audience, otherwise 401); METRICS_AUTH_TOKEN for Internet-facing deployments; AGENT_MEMORY_AUTO_EXTRACT=false (enabling adds an LLM call); PGVECTOR_ITERATIVE_SCAN / PGVECTOR_MAX_SCAN_TUPLES; and LICENSE_VALIDATE_RATE_LIMIT_MAX_ATTEMPTS / LICENSE_VALIDATE_RATE_LIMIT_WINDOW_SECONDS. Partner registration now requires accept_terms, rate limiting and password checks. n8n/Airbyte status requires login. The unimplemented ANSWER_RELEVANCE_USE_LLM, CONTEXT_RELEVANCE_USE_LLM and CLAIM_VERIFICATION_USE_LLM settings refuse startup if enabled.
OPA now uses an internal HTTP client (opa-python-client removed for aiofiles incompatibility). pyjwt 2.15.0, Next 16.3.8; supplied npm audit: zero advisories. WeasyPrint 65 advisories remain mitigated by escaping and deny-all resource fetching; diskcache from dspy has no reported fix. Iterative HNSW scanning is implemented; the 100/1000/10000-document measurement is IN PROGRESS, not a performance claim. BM25 reloads every organization text per request (O(N)).
An organization signs up, uploads documents (or connects its sources), configures one or more assistants, and gets:
It is designed to be self-hosted (Docker) or run as a SaaS.
/v1 API with Python / JavaScript / React / Vue SDKs, SSE streaming| Layer | Choice |
|---|---|
| API | FastAPI (Python 3.11), SQLAlchemy 2.0 async, Alembic |
| Data | PostgreSQL (Supabase) + pgvector, Redis |
| Jobs | Celery + Redis |
| LLM access | LiteLLM — Anthropic, OpenAI, Mistral, Gemini, Ollama, watsonx, any OpenAI-compatible endpoint |
| Frontend | Next.js 16, React, TypeScript, Tailwind |
| Observability | Prometheus, Grafana, Sentry |
Snapshot measured on 2026-10-03: 100 router modules, 936 registered API operations (781 OpenAPI paths), 132 Alembic migration files and 177 ORM tables and 399 Python test files. These are local source/metadata counts, not a deployed database inventory. See autonomous discovery for the file inventory and final status for executed tests and unresolved blockers.
Staging verified on 2026-10-04 (Supabase project <STAGING_PROJECT_REF>,
not local Docker): Alembic 0132, 178 public tables including
alembic_version, pgvector 0.8.2, and the chunk HNSW index.
The revision was also verified visually in Supabase Table Editor.
The local API connected to this staging reports database/rate-limit Redis/cache
readiness OK. Two browser-created users and organizations successfully logged in;
cross-organization reads returned 404 in both directions.
Nine representative staging IDOR tests passed using these same tenants
(zero skips). These are bounded authentication/authorization checks, not
exhaustive tenant-isolation or RLS certification.
See staging evidence and reproduction.
git clone https://github.com/naomytcheums-dotcom/rag-saas-platform.git
cd rag-saas-platform
cp .env.example .env # then fill in the secrets
./install.sh
docker compose -f docker-compose.selfhosted.yml up -d
python -m venv venv && source venv/bin/activate
pip install -r requirements-api.txt -r requirements-optional.txt
alembic upgrade head
uvicorn api.main:app --reload
cd frontend && npm install && npm run dev
The API image installs the lazily loaded integrations in
requirements-optional.txt by default. A minimal image can explicitly use
docker build -f Dockerfile.api --build-arg INSTALL_OPTIONAL_RAG_DEPS=0 .;
features requiring those packages then remain unavailable.
python scripts/check_optional_deps.py verifies API import with all nine
optional module roots blocked, without connecting to a database.
Start at docs/index.md.
| Topic | Where |
|---|---|
| Architecture | ARCHITECTURE.md, docs/architecture/ |
| API reference | docs/api/ |
| Deployment | docs/DEPLOYMENT_GUIDE.md |
| Terminology | GLOSSARY.md |
| Roadmap and the dated log of every fix | ROADMAP.md |
| Product requirements and history | docs/CAHIER_DES_CHARGES.md |
pytest tests/ -x
pytest tests/ --cov=api --cov-report=term-missing
cd frontend && npm run lint && npm run type-check
The suite is large and loads real embedding / vision models; on a machine with limited RAM run it in sequential batches (one pytest process per group of files) rather than as a single process. Tests that need an external provider (Stripe, Paystack, Google Drive, a real Tesseract binary, …) skip themselves when it is not configured — they are reported as skipped, never as passed.
Every behavioural fix is recorded in ROADMAP.md with its test and what was actually executed, including what was written but not yet run.
This section is deliberately explicit:
.venv. Run started at 20:51:26 and ended at 23:49:27 local time.
The 54 skipped integration checks and 23 deselected tests are not
certified. Frontend: 116/116 passed, type-check passed, lint zero errors
and warnings.
See individual failure register
and current final status. Earlier backend counts
are retained in dated historical entries, not current results.scripts/retrieval_benchmark.py measured the portable (non-pgvector) retrieval path at 100 and 1,000 documents (see ROADMAP.md for the numbers and the fixes they drove). It does not yet cover 10,000 documents, the PostgreSQL pgvector/HNSW path, or the HTTP layer under concurrent users. Keyword (BM25) search is still computed per query over the organization's chunks, so very large corpora need a persistent full-text index (planned, requires a migration).See CONTRIBUTING.md and CODE_OF_CONDUCT.md. Report vulnerabilities as described in SECURITY.md.
MIT — see LICENSE.
History: this project was once entered in the IBM Bob 2.0 contest; that material is preserved in docs/ibm_bob_2/CONTEST_README.md.