gramps
975e7579cf
feat: Task 10 — AMQP connection layer with aio-pika
...
amqp.py: connect/disconnect/get_channel/publish with auto-reconnect
- Graceful degradation when aio-pika not installed
- Lazy secret file reader via config.get_amqp_url()
- Fire-and-forget publish (logs error, never raises)
- Connection errors caught and logged (non-fatal)
config.py: AMQP_RECONNECT_DELAY, exchanges, get_amqp_url() helper
app.py: connect in lifespan after assess_hardware, disconnect on shutdown
requirements.txt: aio-pika>=9.0.0
tests/test_amqp.py: 3 mocked tests (publish success, publish disconnected
no-raise, get_channel reconnect)
135 tests pass (132 existing + 3 new)
Fixes: AGENTS.md test/run commands (venv was incomplete)
2026-07-06 08:51:36 -07:00
gramps
36e310e646
fix: add boot-time RAG eviction config validation
...
Log warnings during startup when high_water <= low_water,
batch <= 0, or max_vectors <= 0.
2026-07-06 08:02:41 -07:00
gramps
8072fb3dd0
feat: Roadmap K — RAG corpus management with score-based eviction (v0.13.0)
...
- Config: RAG_MAX_VECTORS, high/low water marks, grace period, weights
- rag.py: get_collection_count, evict_batch, maybe_evict (asyncio.Lock),
get_rag_operational_stats, EVICTION_LOG, retrieval_count tracking
- routers/rag_admin.py: GET /api/rag/stats, POST /api/rag/flush (admin)
- Wire maybe_evict() into upload.py and ingest.py after Qdrant upsert
- 16 tests: collection stats, eviction scoring, pinned/grace/batch guards,
endpoint auth, race lock, flush, operational stats shape
- Bump to v0.13.0
2026-07-06 07:56:09 -07:00
gramps
7291b8fc42
v0.11.0 -> v0.12.0: startup hardware self-assessment (Roadmap J)
...
- hardware.py: assess_hardware() probes RAM, CPU, GPU VRAM (rocm-smi),
llama-server, Qdrant, SearXNG reachability — writes hardware_state.json
- routers/hardware.py: GET /api/hardware (no auth) returns snapshot
- app.py: calls assess_hardware() in lifespan after init_db()
- 4 new tests: all services reachable, rocm-smi absent, llama unreachable,
HTTP endpoint
2026-07-03 12:53:34 -07:00
gramps
1ac21ad13f
v1.10.0 -> v1.11.0: terminal command RAG hook (Roadmap I)
...
- POST /api/ingest with Bearer token auth, chunk_text, embed, Qdrant upsert
- docs/jc-ingest.sh — shell script for PROMPT_COMMAND hook on jarvis
- /api/ingest exempted from session middleware (self-authenticating)
- 5 tests: missing/wrong key, empty/missing content, success path
2026-07-03 12:35:21 -07:00
gramps
4a891c8435
v1.8.9 -> v1.9.0: file upload backend (PDF/text, Qdrant ingest, SQLite context)
2026-07-01 18:15:23 -07:00
gramps
5986c4ad86
fix: close two CSRF origin-check security gaps
...
- Extend origin check to all /api/ requests (not just state-changing methods),
closing the GET/HEAD/OPTIONS bypass that allowed cross-origin reads
- origin_allowed() now returns False when both Origin and Referer headers
are absent, preventing script-initiated requests from bypassing the check
- Update AGENTS.md and README.md to document the changes
2026-06-27 15:20:02 -07:00
gramps
ec2f4c0332
feat: add OpenAI-compat /v1/chat/completions endpoint (TODO #22 )
2026-06-20 14:34:47 -07:00
gramps
d01dd3b761
refactor(arch): modular package structure — split monolithic app.py into config/db/auth/memory/search/rag/gpu + routers/
...
- config.py: all constants, env vars, limits, skill registry, profiles
- db.py: schema init, connection factory, skill state helpers
- security.py: PIN hashing, audit logging, rate limiting, CSRF, request helpers
- auth.py: session management, PIN verify, auth routes
- memory.py: FTS5 CRUD + remember/forget command processing
- search.py: SearXNG integration, perplexity scoring, refusal/hedge detection
- gpu.py: rocm-smi stats
- rag.py: Qdrant vector search + system prompt assembly
- routers/: conversations, memories, models, presets, profile, settings, skills, chat, search
- app.py: slim entry point, middleware, router registration only
Bumps to v1.9.0
2026-06-16 08:17:46 -07:00
gramps
5075a6bc55
feat: v1.8.0 — reposition as homelab developer platform, wire inference to ultron llama-server
...
- Bump version to 1.8.0
- Add LLAMA_SERVER_BASE constant, point all inference calls to ultron:8081
- Update startup log to include llama-server endpoint
- Rewrite README: four pillars, cluster architecture diagram, AMD+NVIDIA RPC setup,
layer tuning progression (7→17→30-35 t/s), full API reference, complete roadmap A-L
- Reframe project identity: knowledge accumulation platform, not chat wrapper
2026-06-15 19:34:11 -07:00
gramps
dd475a6f2d
chore: bump version to v1.8.0
2026-06-14 21:34:24 -07:00
gramps
6de3a1e154
feat: RAG pipeline + OpenAI SSE streaming, llama-server cluster integration
2026-06-14 21:34:24 -07:00
gramps
5a652c1b74
feat: switch from Ollama to llama-server OpenAI-compat API, fix streaming parser
2026-06-14 21:34:05 -07:00
gramps
18bca027de
docs: replace README screenshot asset (v1.7.8)
2026-04-28 09:14:54 -07:00
gramps
36bca94840
docs(todo): add model/preset preflight validation item (v1.7.7)
2026-04-28 09:08:36 -07:00
gramps
71b48d940f
docs: add v1.6/v1.7 release notes and developer wiki (v1.7.6)
2026-04-28 08:53:54 -07:00
gramps
58945a4324
feat(ui): add phase-1 skills toggles in settings (v1.7.5)
2026-04-28 08:49:19 -07:00
gramps
4d1541412b
feat(skills): add phase-1 skill registry and toggles (v1.7.4)
2026-04-28 08:44:22 -07:00
gramps
250fec1f06
test(streaming): cover chat/search/memory paths (v1.7.3)
2026-04-28 08:31:01 -07:00
gramps
12188f3ad2
feat(errors): incident-key safe error envelopes (v1.7.2)
2026-04-27 16:56:17 -07:00
gramps
9589141521
feat(settings): allowlist /api/settings keys (v1.7.1)
2026-04-27 16:48:19 -07:00
gramps
c88e52e0ef
chore(release): bump version to v1.7.0
2026-04-27 16:44:33 -07:00
gramps
76e4461b38
feat(security): add LAN IP allowlist and ingress guardrails
2026-04-27 16:43:21 -07:00
gramps
28aa40c42a
release: v1.6.1 link sanitization and backlog updates
2026-04-27 16:25:35 -07:00
gramps
d9eba53926
fix(memory): sanitize FTS query tokens to handle punctuation
2026-04-27 10:23:42 -07:00
gramps
091a851064
chore(release): bump version to v1.6.0
2026-04-27 10:14:24 -07:00
gramps
81319f83d4
feat(auth): add guest/admin PIN security model and hardening
2026-04-27 10:09:53 -07:00
gramps
6f410e29d2
Fix type errors and bare except clauses in app.py; update readme
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-29 16:09:13 -07:00
gramps
7a151b7d50
Remove unused imports and dead code; update readme
...
- Drop unused JSONResponse import from fastapi.responses
- Remove never-used raw_results_md variable in explicit_search stream
- Note cleanup in v1.5.0 changelog
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-29 15:53:48 -07:00
gramps
3d1ede26ca
v.1.5.0: Explicit web search button, orange search styling
2026-03-15 17:12:20 -07:00
gramps
d57f009b10
Fix default model to llama3.1:latest
2026-03-15 15:57:33 -07:00
gramps
4c7610a554
feat(memory): add FTS5 memory system, refactor to multi-file structure
2026-03-15 14:17:15 -07:00
gramps
4646d82c66
v1.3.1: System stats panel (CPU, memory, GPU, VRAM)
...
- Add /api/stats endpoint using psutil + rocm-smi
- Live-updating bars in sidebar footer (2s interval)
- Color-coded: green/yellow/red based on usage
- Graceful fallback when rocm-smi unavailable
- Updated readme with venv installation instructions
- Requires: psutil
2026-03-15 09:49:03 -07:00
gramps
46cccc9087
Initial commit
2026-03-09 20:06:01 -07:00