108 lines
2.9 KiB
Markdown
108 lines
2.9 KiB
Markdown
# TOML Configuration Migration Guide
|
|
|
|
## Overview
|
|
|
|
The ai.gpt Rust implementation (`aigpt-rs`) now uses TOML format for configuration instead of JSON. This provides better readability and is more idiomatic for Rust applications.
|
|
|
|
## Configuration Location
|
|
|
|
The configuration file is stored at:
|
|
- **macOS**: `~/Library/Application Support/syui/ai/gpt/config.toml`
|
|
- **Linux**: `~/.config/syui/ai/gpt/config.toml`
|
|
- **Windows**: `%APPDATA%\syui\ai\gpt\config.toml`
|
|
|
|
## Automatic Migration
|
|
|
|
When you run the Rust implementation for the first time, it will automatically:
|
|
|
|
1. Check if `config.toml` exists
|
|
2. If not, look for `config.json` in various locations:
|
|
- `../config.json` (relative to aigpt-rs directory)
|
|
- `config.json` (current directory)
|
|
- `gpt/config.json` (from project root)
|
|
- `/Users/syui/ai/ai/gpt/config.json` (absolute path)
|
|
3. If found, automatically convert the JSON to TOML format
|
|
4. Save the converted configuration to the appropriate location
|
|
|
|
## TOML Configuration Structure
|
|
|
|
```toml
|
|
# Default AI provider
|
|
default_provider = "openai"
|
|
|
|
# Provider configurations
|
|
[providers.openai]
|
|
default_model = "gpt-4o-mini"
|
|
api_key = "your-api-key-here" # Optional, can use OPENAI_API_KEY env var
|
|
system_prompt = """
|
|
Multi-line system prompt
|
|
goes here
|
|
"""
|
|
|
|
[providers.ollama]
|
|
default_model = "qwen3"
|
|
host = "http://127.0.0.1:11434"
|
|
|
|
# AT Protocol configuration (optional)
|
|
[atproto]
|
|
host = "https://bsky.social"
|
|
handle = "your-handle.bsky.social" # Optional
|
|
password = "your-app-password" # Optional
|
|
|
|
# MCP (Model Context Protocol) configuration
|
|
[mcp]
|
|
enabled = true
|
|
auto_detect = true
|
|
|
|
# MCP Server definitions
|
|
[mcp.servers.ai_gpt]
|
|
base_url = "http://localhost:8001"
|
|
name = "ai.gpt MCP Server"
|
|
timeout = 10.0
|
|
|
|
# MCP endpoints
|
|
[mcp.servers.ai_gpt.endpoints]
|
|
get_memories = "/get_memories"
|
|
search_memories = "/search_memories"
|
|
# ... other endpoints ...
|
|
```
|
|
|
|
## Manual Migration
|
|
|
|
If automatic migration doesn't work, you can manually convert your `config.json`:
|
|
|
|
1. Copy the example configuration from `gpt/config.toml.example`
|
|
2. Fill in your specific values from `config.json`
|
|
3. Save it to the configuration location mentioned above
|
|
|
|
## Testing Configuration
|
|
|
|
To test if your configuration is working:
|
|
|
|
```bash
|
|
cd gpt/aigpt-rs
|
|
cargo run --bin test-config
|
|
```
|
|
|
|
This will show:
|
|
- Loaded configuration values
|
|
- Available providers
|
|
- MCP and ATProto settings
|
|
- Configuration file path
|
|
|
|
## Differences from JSON
|
|
|
|
Key differences in TOML format:
|
|
- Multi-line strings use triple quotes (`"""`)
|
|
- Comments start with `#`
|
|
- Tables (objects) use `[table.name]` syntax
|
|
- Arrays of tables use `[[array.name]]` syntax
|
|
- More readable for configuration files
|
|
|
|
## Backward Compatibility
|
|
|
|
The Python implementation still uses JSON format. Both implementations can coexist:
|
|
- Python: Uses `config.json`
|
|
- Rust: Uses `config.toml` (with automatic migration from JSON)
|
|
|
|
The Rust implementation will only perform the migration once. After `config.toml` is created, it will use that file exclusively. |