Prerequisites
- Docker and Docker Compose
- An LLM API key (works with OpenAI, Anthropic, OpenRouter, or any OpenAI-compatible provider)
Option 1: Docker (Recommended)
1
Clone the repository
2
Configure environment
.env and add your LLM API key:config/getprofile.json to choose your provider:.env.docker.example file is optimized for Docker deployment.
For local development without Docker, use .env.example instead.3
Start services
- GetProfile Proxy on
http://localhost:3100 - PostgreSQL database
.env file before starting to ensure long API keys are loaded correctly. Database migrations run automatically on first start. Monitor logs with:4
Configure API key (optional)
If you want to protect your proxy with an API key, set it in your If not set, the proxy will accept all requests (useful for local development).After changing
.env:Configuration: You can configure GetProfile via
config/getprofile.json or environment variables. Environment variables take precedence. See Configuration for details..env, restart services:5
Test the proxy
Option 2: Local Development
1
Prerequisites
- Node.js 20+
- pnpm
- PostgreSQL 15+ (pgvector enabled)
2
Clone and install
git clone https://github.com/getprofile/getprofile.git && cd
.env with your DATABASE_URL and LLM_API_KEY:GETPROFILE_API_KEY to require authentication on the proxy.Other settings like rate limiting, message retention, and provider configuration are now in
config/getprofile.json. See Configuration.3
Run migrations
bash pnpm db:migrate 4
(Optional) Load sample data
bash pnpm db:seed:sample Seeds a demo profile for smoke-testing the
dashboard and API.5
Configure API key (optional)
If you want to protect your proxy with an API key, set it in your
.env:
bash GETPROFILE_API_KEY=your-secret-key-here If not set, the proxy will
accept all requests (useful for local development).6
Start development server
Using the Proxy
Once running, update your OpenAI client to use GetProfile. Works with any LLM provider:- GetProfile SDK
- OpenAI SDK
Headers: Provider headers (
X-Upstream-Provider, X-Upstream-Key)
override the config file. If not provided, GetProfile uses the default
provider configured in config/getprofile.json.Customizing Extraction
GetProfile includes default trait schemas and prompts in theconfig/ directory:
Customizing Traits
Editconfig/traits/default.traits.json to define what GetProfile extracts from conversations:
Customizing Prompts
Edit the markdown files inconfig/prompts/ to change how GetProfile:
- Extracts memories from conversations (
extraction.md) - Generates profile summaries (
summarization.md) - Identifies trait values (
trait-extraction.md)