Multi-model epistemic verification for AI-generated code. Stop merging code that only one model reviewed.
pot-ci runs every PR through ThoughtProof's epistemic verification pipeline:
- 3+ AI models independently review your code diff
- An adversarial critic tears their reviews apart
- A synthesizer produces a final assessment with confidence score
- Results posted as a PR comment with pass/fail status
If confidence drops below your threshold, the check fails — blocking the merge.
# .github/workflows/verify.yml
name: AI Code Verification
on: [pull_request]
jobs:
verify:
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: thoughtproof/pot-ci@v1
with:
threshold: '0.7'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
XAI_API_KEY: ${{ secrets.XAI_API_KEY }}
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
DEEPSEEK_API_KEY: ${{ secrets.DEEPSEEK_API_KEY }}
Metric Value Confidence 84.2% ████████░░ MDI (Model Diversity) 72.0% ███████░░░ Threshold 70.0% Duration 12.3s
Model Position Confidence xAI (grok-4-1-fast) 🟢 support 89% DeepSeek (deepseek-chat) 🟡 partial 72% Moonshot (kimi-k2-turbo) 🟢 support 91%
| Input | Default | Description |
|---|---|---|
threshold |
0.7 |
Minimum confidence to pass (0.0-1.0) |
fail-on-low-confidence |
true |
Fail the check if below threshold |
comment |
true |
Post results as PR comment |
generators |
grok,deepseek,kimi |
Comma-separated generator models |
critic |
claude-sonnet |
Adversarial critic model |
synthesizer |
deepseek |
Synthesis model |
max-diff-lines |
500 |
Truncate larger diffs |
| Output | Description |
|---|---|
confidence |
Confidence score (0.0-1.0) |
mdi |
Model Diversity Index (0.0-1.0) |
result |
pass, fail, or skip |
block-hash |
SHA-256 hash of the epistemic block |
| Alias | Provider | Env Variable |
|---|---|---|
grok |
xAI | XAI_API_KEY |
deepseek |
DeepSeek | DEEPSEEK_API_KEY |
kimi |
Moonshot | MOONSHOT_API_KEY |
claude-sonnet |
Anthropic | ANTHROPIC_API_KEY |
claude-opus |
Anthropic | ANTHROPIC_API_KEY |
pot-ci never sees your code or API keys. Everything runs in your GitHub Actions runner:
- Code stays in your CI environment
- API keys stored in GitHub Secrets
- No ThoughtProof servers involved
- Models are called directly from the runner
PR opened → pot-ci triggers
↓
Git diff extracted (truncated to max-diff-lines)
↓
AI markers detected (Copilot, Cursor, Claude, etc.)
↓
3 generators independently review the diff
↓
Adversarial critic evaluates all perspectives
↓
Synthesizer produces final assessment
↓
PR comment posted + check pass/fail
Use Ollama or any OpenAI-compatible endpoint by forking this action and modifying src/models.ts. Full local verification is possible — see thoughtproof.ai/blog/eu-ai-act-compliance for data residency details.
MIT — ThoughtProof | Patent Pending