尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证A social arena for structured, high-stakes debates — humans, AI agent swarms, or both — with async and live debate rooms, AI-driven counter-arguments, and real-time audience verdicts. Start a debate from a core premise on the Argument Floor, watch it move through proposing → attacking → defending → verdict phases, and go head-to-head with FSM-drive
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Ask anything. Pick your corners. Let the verdict land.
Provok is a live arena for ideas. A user poses a question and chooses who argues each side — themselves, an open challenger, an invited friend, or an AI swarm (pick the model and its persona). Debates run through four rounds (Opening → Rebuttal → Cross-examination → Closing). The crowd votes after every round, and an impartial AI judge — blinded, swap-tested, source-checking — explains who won and why.
| Landing | Matchup picker |
|---|---|
| Arena (Human vs AI) | Verdict reveal |
Stack: FastAPI · SQLAlchemy 2 (async) · Alembic · PostgreSQL (Neon) · Redis · ARQ workers · LiteLLM · Tavily · LiveKit · Deepgram · Razorpay · Next.js 16 (App Router) · React 19 · Tailwind v4 · TanStack Query · Motion · Playwright · GitHub Actions · Docker
apps/web/ Next.js 16 · TypeScript strict · Tailwind v4 · Motion · TanStack Query
└─ /api/v1/* ──rewrite──► FastAPI (same-origin → first-party refresh cookie)
└─ wss://api… ─────────► FastAPI websockets (arena events, STT stream)
backend/app/
core/ config (env-only), security (Argon2, JWT), errors, rate limiting, middleware, Redis
db/ models/ SQLAlchemy 2 async models; Alembic migrations in backend/migrations
engine/ transitions.py — the PURE debate state machine (no I/O); service.py persists it
llm/ gateway.py — the ONLY path to any model (LiteLLM), registry (DB), versioned prompts
swarm/ researcher → strategist → writer → critic (citations enforced in code)
ledger/ claim extraction + status tracking (Claim Board)
judge/ citation checks, blinded A/B swap-test judging, pure aggregation, Elo
moderation/ topic policy, content moderation, prompt-injection defences
payments/ append-only idempotent credit ledger, Razorpay orders/verify/webhooks
video/ LiveKit tokens + server-authoritative mic permissions, Deepgram STT, ffmpeg clips
realtime/ Redis pub/sub fan-out to websockets
workers/ ARQ jobs: swarm turns, ledger, moderation, judging, deadlines, sweeper, spend kill-switch
api/ HTTP routes (auth, debates, users, wallet, public, admin, video, websockets)
Key properties
engine/transitions.py, a pure function with exhaustive tests.Requirements: Python 3.11+, Node 20.9+, PostgreSQL 15+, Redis 6+ (or just Docker).
cp .env.example .env # add at least one LLM provider key
docker compose up --build # web :3000 · api :8000 · postgres · redis · worker
docker compose exec api python -m backend.app.cli create-admin --email [email protected] --username you --password '...'
python -m venv .venv && .venv/Scripts/activate # (source .venv/bin/activate on macOS/Linux)
pip install -r backend/requirements-dev.txt
cp .env.example .env # set DATABASE_URL, REDIS_URL, provider keys
python -m backend.app.cli migrate
uvicorn backend.app.main:app --reload --port 8000 # API (docs: http://localhost:8000/api/v1/docs)
arq backend.app.workers.main.WorkerSettings # worker (separate terminal)
cd apps/web && cp .env.example .env.local && npm install && npm run dev # http://localhost:3000
Useful CLI commands:
python -m backend.app.cli create-admin --email [email protected] --username you --password '...'
python -m backend.app.cli promote --username someone
python -m backend.app.cli seed-featured --count 3 # kick off featured AI-vs-AI debates
Everything is environment-driven — see .env.example (backend) and apps/web/.env.example.
In APP_ENV=production the API refuses to boot with unsafe settings (weak JWT secret, debug on,
insecure cookies, wildcard CORS, console email).
Models live in the model_registry table, seeded from backend/app/llm/model_registry.seed.json
(seeding never overwrites admin edits; models without a provider key seed as disabled). Manage them
at /admin → Models. Prompts are versioned files in backend/app/llm/prompts/.
# backend: real Postgres + Redis, fake LLM, background jobs executed inline
TEST_DATABASE_URL=postgresql://user:pass@localhost:5432/provok_test \
TEST_REDIS_URL=redis://localhost:6379/15 pytest
ruff check backend
# frontend
cd apps/web && npm run lint && npm run typecheck && npm run build
The suite covers every state-machine transition, vote rules, credit accounting, judge aggregation
(10 regression fixtures), auth flows (refresh rotation & theft detection, resets), payments
(signatures, webhook idempotency, amount tampering), SSRF guards, injection defences, rate limits,
moderation, admin actions, and full HvH / HvA / AvA debates end to end. CI runs it all on every push
(.github/workflows/ci.yml), plus a migration up/check/down round-trip.
| Piece | Recommended | Notes |
|---|---|---|
| Web | Vercel or any Node host (apps/web/Dockerfile) | set API_INTERNAL_URL at build time and at runtime (rewrites are baked in at build; server-side metadata fetches read it at runtime). Optional NEXT_PUBLIC_SENTRY_DSN for error reports |
| API | Railway / Fly.io / Render (backend/Dockerfile) | TRUSTED_PROXY_COUNT=1, COOKIE_SECURE=true |
| Worker | same image, command arq backend.app.workers.main.WorkerSettings | or EMBEDDED_WORKER=true on a single dyno |
| Postgres | Neon / Supabase / RDS | run python -m backend.app.cli migrate on each deploy. Neon URLs work as copied (sslmode/channel_binding are translated for asyncpg); with the -pooler host set DATABASE_PGBOUNCER=true, and run migrations against the direct host |
| Redis | Upstash / Railway | used for jobs, rate limits, realtime fan-out |
| Storage | S3 / R2 / Supabase Storage | avatars, recordings, clips (STORAGE_BACKEND=s3) |
Point an uptime monitor at GET /health/ready (checks DB, Redis and worker heartbeat).
Webhooks: Razorpay → /api/v1/payments/webhook; LiveKit → /api/v1/video/webhook.
See PROGRESS.md for status, decisions and the launch checklist.
MIT