Installation
How to install and run Envault locally
Envault is a self-hostable application. You can run it locally for development or deploy it to your own infrastructure.
Monorepo Components
This repository includes multiple components:
- Web app: root folder (
./) - Go CLI:
cli-go/ - TypeScript SDK:
src/lib/sdk/ - MCP server:
mcp-server/
Prerequisites
Before you begin, ensure you have the following installed:
- Node.js 18+ (LTS recommended)
- Supabase project (or a local Supabase instance)
- Redis (optional, for caching)
Quick Start
Install dependencies
We recommend using pnpm for faster installation, but npm or yarn work just as well.
bash npm install bash pnpm install bash yarn install bash bun install If you will work on SDK and MCP packages, also install dependencies in each package folder:
cd src/lib/sdk && npm installcd ../../../mcp-server && npm installcd ..Environment Setup
Copy the example environment file to get started.
cp .env.example .env.localYou will need to populate .env.local with your Supabase credentials.
Start Development Server
npm install -g portlessnpm run devVisit https://envault.localhost:1355 to see your Envault instance running.
Docker Compose
For a quick local setup with all dependencies (including Redis and Postgres), you can use Docker Compose.
version: "3.8"
services:
envault:
build: .
ports:
- "3000:3000"
environment:
- DATABASE_URL=postgresql://postgres:postgres@db:5432/envault
- ENCRYPTION_KEY=...
depends_on:
- db
- redis
db:
image: postgres:15-alpine
environment:
POSTGRES_PASSWORD: postgres
redis:
image: redis:alpinedocker-compose up -dVerify Installation
To ensure everything is working correctly:
- Sign In: Open the app and try signing in (this tests Supabase Auth).
- Create Project: Create a new project called "Test Project" (tests Database write).
- Add Secret: Add a key-value pair
TEST_KEY=123(tests Encryption). - SDK/MCP checks (optional):
npm run sdk:checknpm run mcp:checkIf you see an error about ENCRYPTION_KEY missing, ensure you have generated
a valid 32-byte key in your .env.local.
Troubleshooting
ENCRYPTION_KEY Error
If you see "Invalid Encryption Key", run this command to generate a valid one:
openssl rand -hex 32Add the output to your .env.local.
Database Connection Failed
Check your DATABASE_URL and ensure your Supabase project is active. If running locally, make sure your local Supabase instance is running with npx supabase start.