MarioGLealPandClaude Opus 5.5 84807850ec
CI / test (pull_request) Successful in 27s
feat: optional mTLS - only felt-core's Felt cert gets in (WP-62 M2b B5.2, D10.2)
Off unless DRIVE_RAG_TLS_BUNDLE is set (plain HTTP as before), so this ships
ahead of the switch.

- server/mtls.py: the same module as felt-voice's (B5.1): uvicorn with TLS
  1.3, client cert required against DRIVE_RAG_TLS_CA (the pki_felt
  intermediate, partial chain - never the root); the peer must carry exactly
  one SPIFFE URI from DRIVE_RAG_TLS_ALLOWED (default felt-core), checked before
  any request byte; the server cert reloads when the bundle is renewed.
- server/serve.py: the entry point (Dockerfile CMD) - plain uvicorn or mTLS.
- tests/test_mtls.py: real test PKI (name-constrained intermediate): felt-core
  in; no cert, another Felt identity, wrong CA, TLS 1.2 refused; a renewed cert
  is picked up without a restart. 6 pass. CI runs them.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_015bTPg3qG72vYPLBigJks5h
2026-10-07 18:00:57 +01:00

drive-rag

RAG over Mario's local Google Drive sync (docs, PDFs, the Obsidian vault). felt-core's search_documents skill is the only caller; answers via felt-llm (local).

Deployed on clockmost: push to main -> CI builds git.clockmost.com/benylin/drive-rag:<sha> and bumps its tag in the infra repo; the deploy loop health-checks it and auto-reverts on failure (Felt WP-53). The index (/data) is mounted on the server, not in this repo.

Until 2026-10-02 this code lived vendored inside the infra repo (projects/drive-rag/app).

S
Description
RAG over a local Google Drive / Obsidian sync, answered by a local LLM
Readme MIT
114 KiB
0 Stars 1 Watchers 0 Forks
Languages
Python 96%
Dockerfile 4%