Files
madomeda/CONFIGURATION.md
2025-10-23 20:14:21 +02:00

299 lines
5.8 KiB
Markdown

---
title: Configuration Management
created: '2025-10-23T19:29:26+02:00'
status: draft
priority: 5
published: false
tags:
- aiml
- python
reviewers: []
---
# Configuration Management
## Configuration Directory
Madomeda stores its configuration in a platform-specific location:
- **Windows**: `%USERPROFILE%\.config\madomeda`
- **macOS**: `~/.config/madomeda`
- **Linux**: `~/.config/madomeda`
## First Run
On first run, Madomeda automatically creates:
```
~/.config/madomeda/
├── .env # API configuration
├── templates/
│ └── default.json # Default frontmatter template
├── rules/
│ ├── lowercase_keys.json
│ ├── summary_to_description.json
│ ├── tag_to_tags.json
│ └── tags_normalization.json
└── prompts/
└── default.txt # Default LLM prompt
```
## Configuration Display
When running in an **interactive shell**, Madomeda displays configuration info:
```
Configuration directory: C:\Users\YourName\.config\madomeda
.env file: C:\Users\YourName\.config\madomeda\.env
Templates: C:\Users\YourName\.config\madomeda\templates
Rules: C:\Users\YourName\.config\madomeda\rules
Prompts: C:\Users\YourName\.config\madomeda\prompts
API Key: Not configured (LLM features disabled)
```
In **non-interactive mode** (pipes, scripts), this info is suppressed.
## API Key Configuration
The `.env` file supports three modes for `OPENAI_API_KEY`:
### 1. No API Key (Default)
```bash
OPENAI_API_KEY=""
```
**Output:**
```
API Key: Not configured (LLM features disabled)
```
**Behavior:** LLM features are disabled, only heuristics and original values used.
### 2. Environment Variable Reference
```bash
OPENAI_API_KEY=$MY_API_KEY
```
**Output:**
```
API Key: From environment variable $MY_API_KEY
```
**Behavior:**
- Reads key from environment variable `MY_API_KEY`
- **Error if not found:**
```
ValueError: Environment variable 'MY_API_KEY' not found.
Referenced in .env as OPENAI_API_KEY=$MY_API_KEY
```
**Setup:**
```bash
# Linux/macOS
export MY_API_KEY="sk-your-actual-key"
# Windows (PowerShell)
$env:MY_API_KEY = "sk-your-actual-key"
# Windows (CMD)
set MY_API_KEY=sk-your-actual-key
```
### 3. Plain Text Key
```bash
OPENAI_API_KEY=sk-1234567890abcdef
```
**Output:**
```
API Key: Configured (plain text)
WARNING: Storing API keys in plain text is a security risk!
Consider using environment variable: OPENAI_API_KEY=$YOUR_ENV_VAR
```
**Behavior:** Works but shows security warning every run.
## Best Practices
### ✅ Recommended: Environment Variable
```bash
# In .env file
OPENAI_API_KEY=$OPENAI_API_KEY
# In your shell profile (~/.bashrc, ~/.zshrc, etc.)
export OPENAI_API_KEY="sk-your-actual-key"
```
**Benefits:**
- Key not stored in config file
- Can be different per user/machine
- Easy to rotate without editing files
- Can use system keyring tools
### ⚠️ Acceptable: Empty String
```bash
OPENAI_API_KEY=""
```
**Use when:**
- Don't have LLM access
- Only using heuristics
- Testing/development
### ❌ Not Recommended: Plain Text
```bash
OPENAI_API_KEY=sk-1234567890abcdef
```
**Risks:**
- Key visible to anyone with file access
- Accidentally committed to version control
- Hard to rotate across systems
## Customizing Configuration
### Custom Templates
Create in `~/.config/madomeda/templates/`:
```bash
# Create minimal template
cat > ~/.config/madomeda/templates/minimal.json << 'EOF'
{
"title": "heur|orig",
"date": "heur|orig",
"tags": "orig"
}
EOF
# Use it
madomeda --template minimal
```
### Custom Rules
Create in `~/.config/madomeda/rules/`:
```bash
cat > ~/.config/madomeda/rules/my_rule.json << 'EOF'
{
"name": "my_custom_rule",
"description": "My custom rule description",
"type": "custom"
}
EOF
```
Note: Custom rules require code changes in `core/rules.py` to implement logic.
### Custom Prompts
Create in `~/.config/madomeda/prompts/`:
```bash
cat > ~/.config/madomeda/prompts/technical.txt << 'EOF'
You are a technical documentation expert.
Focus on API documentation and code examples.
...
EOF
```
Reference in template:
```json
{
"summary": "ai technical"
}
```
## Multiple API Providers
Edit `OPENAI_API_URL` in `.env`:
```bash
# OpenAI
OPENAI_API_URL=https://api.openai.com/v1
# Azure OpenAI
OPENAI_API_URL=https://your-resource.openai.azure.com/
# Local LLM (Ollama)
OPENAI_API_URL=http://localhost:11434/v1
# Other OpenAI-compatible APIs
OPENAI_API_URL=https://api.your-provider.com/v1
```
## Troubleshooting
### Config Not Created
Ensure write permissions:
```bash
mkdir -p ~/.config/madomeda
chmod 755 ~/.config/madomeda
```
### Environment Variable Not Found
Check it's set:
```bash
# Linux/macOS
echo $MY_API_KEY
# Windows (PowerShell)
echo $env:MY_API_KEY
```
If not set, add to shell profile or set before running:
```bash
MY_API_KEY="sk-key" madomeda
```
### Wrong Config Location
Madomeda uses `$USERPROFILE` (Windows) or `$HOME` (Unix).
Check:
```bash
# Linux/macOS
echo ~/.config/madomeda
# Windows (PowerShell)
echo $env:USERPROFILE\.config\madomeda
```
### API Key Warning on Every Run
This is intentional for plain text keys. Switch to environment variable to suppress.
## Migration from Old Version
If you had local `.env`, `templates/`, `rules/`, `prompts/` in the repo:
1. Copy to new location:
```bash
cp -r templates ~/.config/madomeda/
cp -r rules ~/.config/madomeda/
cp -r prompts ~/.config/madomeda/
cp .env ~/.config/madomeda/
```
2. Update `.gitignore` (no longer need to ignore these locally)
3. Old local files are now ignored by the program
## Security Notes
- Never commit `.env` with plain text keys
- Use environment variables or secret management tools
- Config directory is user-specific (not shared)
- On shared systems, ensure `~/.config/madomeda/` has proper permissions:
```bash
chmod 700 ~/.config/madomeda
```