1
0
Fork
You've already forked probatus
0
RFC and ADR management powered by GitHub/Codeberg. Track, review, and document architectural decisions with full transparency.
  • Rust 71.1%
  • TypeScript 23.9%
  • CSS 4%
  • JavaScript 0.6%
  • HTML 0.4%
Naruse Nia 1f970450c6
All checks were successful
CI / rustfmt (push) Successful in 41s
CI / clippy (push) Successful in 2m12s
CI / frontend (push) Successful in 1m41s
CI / test (push) Successful in 2m17s
CI / ci (push) Successful in 4s
Merge pull request 'feat: add RFC/ADR detection, document API, dashboard and detail views' ( #2 ) from feat/documents into main
Reviewed-on: #2 
2026年06月11日 06:16:23 +02:00
.claude/rules docs: clarify commit message should describe concrete changes (claude) 2026年06月09日 16:45:41 +09:00
.forgejo/workflows ci: use mise + rust-cache, split jobs, runs-on m574 (claude) 2026年06月09日 17:12:10 +09:00
crates fix: redirect to base_url after OAuth callback for dev server compat (claude) 2026年06月11日 13:10:08 +09:00
docs feat: add .probatus.toml parser and RFC/ADR scanner (claude) 2026年06月11日 12:36:11 +09:00
migrations feat: add GitHub OAuth login, session management, auth endpoints (claude) 2026年06月11日 11:00:00 +09:00
web feat: add dashboard with stage filters and document detail view (claude) 2026年06月11日 12:39:47 +09:00
.env feat: add SQLite database foundation with initial migration (claude) 2026年06月09日 16:52:36 +09:00
.gitignore chore: gitignore probatus-server.toml (contains secrets) (claude) 2026年06月11日 13:06:55 +09:00
Cargo.lock feat: init cargo workspace with server, mcp, common crates (claude) 2026年06月09日 16:51:36 +09:00
Cargo.toml feat: init cargo workspace with server, mcp, common crates (claude) 2026年06月09日 16:51:36 +09:00
CLAUDE.md docs: update CLAUDE.md with mise setup and Phase 1 progress (claude) 2026年06月09日 17:07:50 +09:00
LICENSE chore: add AGPL-3.0 license, mise config, update README for pnpm/vp (claude) 2026年06月09日 17:06:13 +09:00
mise.toml chore: add mise dev task for parallel backend + frontend (claude) 2026年06月11日 13:06:22 +09:00
probatus-server.example.toml docs: add probatus-server.example.toml (claude) 2026年06月11日 13:10:57 +09:00
README.md chore: add AGPL-3.0 license, mise config, update README for pnpm/vp (claude) 2026年06月09日 17:06:13 +09:00

Probatus

Probatus is a web UI application that streamlines RFC and ADR (Architecture Decision Record) review and approval workflows, integrated with GitHub and Codeberg (Forgejo).

It provides a clear, structured view of document lifecycles — who approved what, when, and why — while keeping your Git repository as the source of truth.

Caution

This project is in early development and is being built with heavy use of AI-assisted coding to move fast. Code quality, test coverage, and security hardening are not yet at production standards. Do not use in production. Expect breaking changes, rough edges, and incomplete error handling. Contributions and bug reports are welcome — just be aware of the current state.

Features

  • Stage-based lifecycle management: Draft → Proposed → Under Review → Accepted → Implemented → Superseded/Deprecated, with Rejected branching
  • Approval tracking: N/M approval rules with full audit trail (who approved, when, with comments)
  • Multi-repository dashboard: Cross-repository view of all RFCs and ADRs in one place
  • Git synchronization: PR labels and bot comments keep GitHub/Codeberg in sync with Probatus state
  • MCP Server: AI agents (Claude Code, etc.) can query and manage RFCs/ADRs via Model Context Protocol
  • CI Actions: Validation, stage sync, and approval gate actions for GitHub/Forgejo Actions
  • Structured discussions: Topic-based discussion threads with section-level comments, separate from PR comments

Quick Start

Binary

# Download the latest release
curl -LO https://codeberg.org/nxeu/probatus/releases/latest/download/probatus-$(uname -s)-$(uname -m)
chmod +x probatus-*
./probatus-* init # Generate default config
./probatus-* serve

Docker

docker run -d \
 -p 3000:3000 \
 -v probatus-data:/data \
 -e PROBATUS__AUTH__GITHUB__CLIENT_ID=your_client_id \
 -e PROBATUS__AUTH__GITHUB__CLIENT_SECRET=your_client_secret \
 codeberg.org/nxeu/probatus:latest

Configuration

Probatus is configured via probatus-server.toml with environment variable overrides.

[server]
host = "0.0.0.0"
port = 3000
base_url = "https://probatus.example.com"
[database]
path = "./data/probatus.db"
[auth.github]
client_id = ""
client_secret = ""
[webhook]
secret = ""
[sync]
polling_interval = "5m"

Environment variables follow the pattern PROBATUS__{SECTION}__{KEY} (e.g., PROBATUS__SERVER__PORT=8080).

Repository Setup

Add a .probatus.toml to your repository root to configure RFC/ADR detection:

[documents]
rfc_paths = ["docs/rfcs"]
adr_paths = ["docs/adrs"]
pattern = "*.md"
[approval]
required_approvals = 2

Without .probatus.toml, Probatus scans default paths: docs/rfcs/, docs/adrs/, rfcs/, adrs/.

RFC/ADR Format

Probatus expects Markdown files with YAML frontmatter:

---
title: Use event sourcing for audit trail
status: draft
authors: ["@username"]
created: 2026年01月15日
tags: ["architecture", "backend"]
related: ["docs/adrs/001-database-choice.md"]
---
## Context

...
## Decision

...
## Consequences

...

Required fields

  • title — Document title
  • status — Current stage (draft, proposed, under_review, accepted, implemented, superseded, deprecated, rejected)
  • authors — List of authors
  • created — Creation date
  • reviewers — List of reviewers
  • tags — Classification tags
  • related — Related RFC/ADR paths
  • supersedes / superseded_by — Replacement relationships

MCP Server

The MCP server is a standalone binary that lets AI agents interact with your RFCs/ADRs.

Standalone mode (no Probatus server required)

{
 "mcpServers": {
 "probatus": {
 "command": "probatus-mcp",
 "env": {
 "GITHUB_TOKEN": "ghp_..."
 }
 }
 }
}

Connected mode (with Probatus server)

{
 "mcpServers": {
 "probatus": {
 "command": "probatus-mcp",
 "env": {
 "PROBATUS_URL": "https://probatus.example.com",
 "PROBATUS_TOKEN": "..."
 }
 }
 }
}

Available tools

Tool Standalone Connected Description
list_documents Yes Yes List and search RFCs/ADRs
get_document Yes Yes Get full document content
get_approval_status Partial Yes Query approval state
transition_stage No Yes Change document stage
approve / reject No Yes Approve or reject a document
create_draft No Yes Create a new RFC/ADR draft
submit_for_review No Yes Submit draft for review

GitHub/Forgejo Actions

Stage Sync

- uses:nxeu/probatus/actions/sync@v0with:probatus-url:${{ secrets.PROBATUS_URL }} # optionalprobatus-token:${{ secrets.PROBATUS_TOKEN }} # optional

Validation

- uses:nxeu/probatus/actions/validate@v0with:strict:false# Set true to error on missing recommended sections

Approval Gate

- uses:nxeu/probatus/actions/gate@v0with:probatus-url:${{ secrets.PROBATUS_URL }}probatus-token:${{ secrets.PROBATUS_TOKEN }}required-stage:accepted

Tech Stack

  • Backend: Rust / Axum
  • Frontend: Vite + React + shadcn/ui + Tailwind CSS + TanStack Query
  • Database: SQLite (sqlx, FTS5)
  • API: REST + OpenAPI 3.1
  • MCP: Rust (stdio transport)
  • Auth: GitHub / Forgejo OAuth 2.0
  • License: AGPL-3.0

Development

# Prerequisites: Rust toolchain, Node.js 22+, pnpm, vp (vite-plus)
git clone https://codeberg.org/nxeu/probatus.git
cd probatus
# Backend
cargo build
# Frontend
cd web && pnpm install && vp dev
# Run tests
cargo test

License

This project is licensed under the GNU Affero General Public License v3.0.