Qt6 GUI for searching local vector RAG stores with markdown rendering
Project description
vector-rag-gui
A Qt6 GUI for searching local FAISS vector stores with AI-powered research synthesis. Built as a custom agent using the Claude Code Agent SDK.
Architecture
This application is built on the Claude Code Agent SDK framework, providing an agentic research assistant with access to multiple tools.
Dependencies
| Library | Usage |
|---|---|
| vector-rag-tool | Local FAISS vector store search |
| aws-knowledge-tool | AWS documentation search |
| gemini-google-search-tool | Web search via Gemini with Google Search grounding |
| claude-code-sdk-python | Agent framework with @tool decorator and MCP server |
Agent Tools
The agent has access to 6 tools using the Claude Agent SDK @tool decorator:
| Tool | Description |
|---|---|
search_local_knowledge |
Search local FAISS vector stores |
search_aws_docs |
Search AWS documentation |
search_web |
Search the web with Google Search grounding |
glob_files |
Find files matching glob patterns |
grep_files |
Search for regex patterns in files |
read_file |
Read contents of a specific file |
Custom Prompts
The agent supports custom system prompts for specialized use cases:
- Research Prompt: Default prompt for multi-source research synthesis
- Obsidian Knowledge Prompt: Template for querying Obsidian vaults with wiki-link following and daily notes support
The Obsidian prompt instructs the agent to:
- Use RAG to find relevant notes
- Read full files (not just snippets)
- Follow
[[wiki links]]using glob + read - Search daily notes for date-related queries
Features
- Qt6 desktop GUI with GitHub-flavored markdown rendering
- Research mode with multi-source synthesis (local RAG, AWS docs, web search)
- Read-only file tools (glob, grep, read) for codebase exploration
- Multi-store selection for comprehensive local searches
- Real-time progress with token usage and cost tracking
- Dark/Light mode toggle
- System tray integration
- Built-in REST API server (starts automatically with GUI)
- Persistent settings (window position, selected stores, tools, model)
Installation
Requires Python 3.14+, uv, and vector-rag-tool.
git clone https://github.com/dnvriend/vector-rag-gui.git
cd vector-rag-gui
uv tool install .
Configuration
AWS Bedrock credentials via environment variables:
export AWS_PROFILE="your-profile"
export AWS_REGION="us-east-1"
# Optional: Override model inference profiles
export ANTHROPIC_DEFAULT_SONNET_MODEL="arn:aws:bedrock:..."
export ANTHROPIC_DEFAULT_OPUS_MODEL="arn:aws:bedrock:..."
export ANTHROPIC_DEFAULT_HAIKU_MODEL="arn:aws:bedrock:..."
Usage
# Launch GUI (REST API starts automatically)
vector-rag-gui
# Launch with custom API port
vector-rag-gui --port 9000
# Launch with specific store pre-selected
vector-rag-gui start --store my-knowledge-base
# List available stores
vector-rag-gui stores
vector-rag-gui stores --json
# Show configuration
vector-rag-gui config
# Verbose output
vector-rag-gui -v # INFO
vector-rag-gui -vv # DEBUG
vector-rag-gui -vvv # TRACE
On startup, a banner displays the API endpoints:
╭─────────────────────────────────────────╮
│ Vector RAG GUI v0.1.0 │
├─────────────────────────────────────────┤
│ REST API: http://127.0.0.1:8000 │
│ Swagger: http://127.0.0.1:8000/docs │
╰─────────────────────────────────────────╯
Options
| Option | Description |
|---|---|
-p, --port |
REST API port (default: from settings or 8000) |
-v, --verbose |
Increase verbosity (repeatable) |
-h, --help |
Show help message |
--version |
Show version |
Commands
| Command | Description |
|---|---|
start |
Launch GUI (default) |
serve |
Start REST API server |
stores |
List available vector stores |
config |
Show current configuration |
completion |
Generate shell completion script |
REST API
Start the API server for programmatic access:
vector-rag-gui serve # Default: localhost:8000
vector-rag-gui serve --host 0.0.0.0 --port 8080
vector-rag-gui serve --reload # Development mode
Endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/health |
Health check |
| GET | /api/v1/models |
List available Claude models |
| GET | /api/v1/tools |
List available research tools |
| GET | /api/v1/stores |
List available vector stores |
| POST | /api/v1/research |
Execute research synthesis |
Research Request
Minimal request (question and stores required):
curl -X POST http://localhost:8000/api/v1/research \
-H "Content-Type: application/json" \
-d '{"question": "How does X work?", "stores": ["obsidian-knowledge-base"]}'
Full request with all options:
curl -X POST http://localhost:8000/api/v1/research \
-H "Content-Type: application/json" \
-d '{
"question": "How does X work?",
"stores": ["obsidian-knowledge-base", "code-docs"],
"model": "opus",
"tools": ["local", "aws", "web", "glob", "grep", "read"],
"top_k": 10
}'
Request Parameters
| Field | Required | Default | Description |
|---|---|---|---|
question |
Yes | - | Research question |
stores |
Yes | - | Vector store names to query |
model |
No | sonnet |
Model: haiku, sonnet, opus |
tools |
No | ["local", "glob", "grep", "read"] |
Tools to enable |
top_k |
No | 5 |
Results per source (1-20) |
Available Tools
| Tool | Category | Description |
|---|---|---|
local |
search | Search local FAISS vector stores |
aws |
search | Search AWS documentation |
web |
search | Search the web |
glob |
file | Find files by pattern |
grep |
file | Search file contents |
read |
file | Read file contents |
API Documentation
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
- OpenAPI: http://localhost:8000/openapi.json
Keyboard Shortcuts
| Shortcut | Action |
|---|---|
Ctrl+L |
Focus search input |
Ctrl+R |
Refresh stores |
Ctrl+D |
Toggle dark/light mode |
Ctrl+I |
Show store info |
Ctrl+M |
Minimize to tray |
Ctrl+Q |
Quit |
Settings
Settings are persisted to ~/.config/vector-rag-gui/settings.json and restored on startup.
Saved settings include:
- Window position and size
- Splitter panel sizes
- Selected stores
- Research mode options (tools, model, dark mode)
- REST API port
Example settings file:
{
"port": 8000,
"selected_stores": ["obsidian-knowledge-base"],
"window": {
"x": 100,
"y": 100,
"width": 900,
"height": 700,
"splitter_sizes": [500, 120]
},
"research": {
"research_mode": true,
"use_local": true,
"use_aws": false,
"use_web": false,
"model": "sonnet",
"dark_mode": true,
"full_content": false
}
}
Development
make install # Install dependencies
make test # Run tests
make check # Run all checks (format, lint, typecheck, test, security)
make pipeline # Full CI pipeline
License
Author
Dennis Vriend - @dnvriend
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vector_rag_gui-0.1.0.tar.gz.
File metadata
- Download URL: vector_rag_gui-0.1.0.tar.gz
- Upload date:
- Size: 848.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2e91d0109c4391f61ced81c94c340161ab4c9f600d566e03cd9a4dd346d0aa5a
|
|
| MD5 |
d3e9b05233de0be24d04194930b23ef7
|
|
| BLAKE2b-256 |
96da29ad35531d12202fd59614858343b8018751a8ec691ff5d2a7871b110870
|
Provenance
The following attestation bundles were made for vector_rag_gui-0.1.0.tar.gz:
Publisher:
publish.yml on dnvriend/vector-rag-gui
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vector_rag_gui-0.1.0.tar.gz -
Subject digest:
2e91d0109c4391f61ced81c94c340161ab4c9f600d566e03cd9a4dd346d0aa5a - Sigstore transparency entry: 747681294
- Sigstore integration time:
-
Permalink:
dnvriend/vector-rag-gui@27dbe4b781f9dc052b3bc49cc8ac081b7a6cfa3c -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/dnvriend
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@27dbe4b781f9dc052b3bc49cc8ac081b7a6cfa3c -
Trigger Event:
push
-
Statement type:
File details
Details for the file vector_rag_gui-0.1.0-py3-none-any.whl.
File metadata
- Download URL: vector_rag_gui-0.1.0-py3-none-any.whl
- Upload date:
- Size: 89.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
43e7e30ff7f61acd635a25576643f0aad135dde47934eaa047cb8a9ea622fe4b
|
|
| MD5 |
e8058be0520ffe1446c59e860a6c2066
|
|
| BLAKE2b-256 |
46206cbcae66ad318e89f6659cc2cfa1e5dc0eed2d4811ad6e1743ec3644e677
|
Provenance
The following attestation bundles were made for vector_rag_gui-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on dnvriend/vector-rag-gui
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vector_rag_gui-0.1.0-py3-none-any.whl -
Subject digest:
43e7e30ff7f61acd635a25576643f0aad135dde47934eaa047cb8a9ea622fe4b - Sigstore transparency entry: 747681295
- Sigstore integration time:
-
Permalink:
dnvriend/vector-rag-gui@27dbe4b781f9dc052b3bc49cc8ac081b7a6cfa3c -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/dnvriend
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@27dbe4b781f9dc052b3bc49cc8ac081b7a6cfa3c -
Trigger Event:
push
-
Statement type: