# Local Development Setup Running poimen-memory locally for development. ## Quick Start 1. **Copy env template**: ```bash cp .env.example .env ``` 2. **Edit `.env`** with your local endpoints: ```bash # Edit .env with your local/dev service URLs # Example: LLM service on localhost:11434, OpenSearch on localhost:9200 ``` 3. **Run the service**: ```bash cargo run --release -- serve --port 8080 ``` The application loads configuration from `.env` (via `dotenvy` or similar). ## `.env` File **Location**: Project root (`.env`) **Status**: Gitignored - never committed **Template**: `.env.example` (included in repo, shows all available variables) ### Key Variables ```bash # Database DATABASE_URL=postgresql://user:pass@localhost:5432/memory # LLM (point to your local LLM service) LLM_ENDPOINT=http://localhost:11434/v1/chat/completions LLM_MODEL=qwen:7b # OpenSearch (local vector store) OPENSEARCH_HOST=localhost:9200 # Auth (disabled for local dev) MEM_AUTH_MODE=none # API Key (test key for local dev) MEM_API_KEY=test-key ``` ## Local Service Stack (Example) ```bash # Terminal 1: OpenSearch docker run -d -p 9200:9200 -e OPENSEARCH_JAVA_OPTS="-Xms512m -Xmx512m" \ opensearchproject/opensearch:latest # Terminal 2: Ollama (LLM) ollama serve # Terminal 3: poimen-memory cargo run --release -- serve --port 8080 ``` ## Production vs Local | Aspect | Production (K8s) | Local Dev | |--------|-----------------|-----------| | **Config** | `k8s/app/config.yaml` (SOPS-encrypted) | `.env` (gitignored) | | **Injection** | ConfigMap via `envFrom:` | dotenv via `dotenvy` crate | | **Services** | Cluster-internal DNS | localhost/127.0.0.1 | | **Auth** | JWT (Authentik) | None (disabled) | | **Commit?** | Yes (encrypted) | No (gitignored) | ## Switching to Production Config To run against production services (not recommended locally): 1. Edit `.env` with production URLs 2. Set credentials appropriately 3. Ensure network access to production services --- See `.env.example` for all available environment variables.