Self-hosted · Private
Your knowledge,
always within reach.
A personal knowledge system that mirrors your Obsidian vault from S3 and uses OpenCode to answer questions grounded in your notes through a secure web UI.
Features
Built for personal, private knowledge work.
Your vault mirror and chat history stay on your infrastructure. OpenCode sends query context to your selected model provider.
Grounded Vault Answers
Ask questions about your mirrored vault with OpenCode and GPT-6 Luna. Keep answers grounded in your notes with source citations.
Multi-threaded Chat
Every question is a thread. Browse your history from a persistent sidebar, resume conversations, and keep source citations alongside each answer.
Secure by Default
Only the Next.js UI is reachable externally through Cloudflare Tunnel and Access. OpenCode and the sync worker are locked to the internal Docker network.
Architecture
From vault to answer, end to end.
Obsidian writes to S3 via Remotely Save. Lattice mirrors your notes on your hardware and uses OpenCode with your selected model provider to answer questions.
Obsidian Vault
Remotely SaveAWS S3
read-only bucketsync-worker
every 5 minOpenCode
grounded vault answersNext.js UI
web appCloudflare
Tunnel + AccessDeployment
One Compose file. Any ARM64 Linux box.
The full stack — sync worker, OpenCode query service, scheduler, and web app — orchestrated by a single Docker Compose file.
webpublic
opencode-queryinternal
sync-workerinternal
schedulerinternal
cloudflaredtunnel
Quick Start
# Clone and configure git clone https://github.com/you/lattice cp .env.example .env # Set your S3 bucket, region, and creds # Set CLOUDFLARE_TUNNEL_TOKEN # Create runtime directories mkdir -p /srv/lattice/{vault,status,logs,chat} # Start the stack make up