144 lines
6.9 KiB
YAML
144 lines
6.9 KiB
YAML
# ============================================================================
|
|
# Gadget Code Platform — Example Configuration
|
|
# ============================================================================
|
|
# Install this file to one of:
|
|
# ~/.config/gadget/gadget-code.yaml (user-level, takes precedence)
|
|
# /etc/gadget/gadget-code.yaml (system-level)
|
|
#
|
|
# Secrets MUST be stored in environment variables, NOT in this file.
|
|
# Use ${VAR_NAME} syntax to reference environment variables.
|
|
# ============================================================================
|
|
|
|
# Timezone for the server (used by dayjs and logging)
|
|
timezone: "America/New_York"
|
|
|
|
# ── Site Information ────────────────────────────────────────────────────────
|
|
# These values are exposed to the frontend and used in page titles, emails, etc.
|
|
site:
|
|
company: "Your Company"
|
|
companyShort: "YourCo"
|
|
name: "Gadget Code"
|
|
shortName: "Gadget"
|
|
slogan: "Self-hosted Agentic Engineering Platform"
|
|
description: "A self-hosted agentic development environment."
|
|
domain: "code.example.com" # Primary domain (no port)
|
|
domainKey: "code" # Short key used in cookie names, etc.
|
|
host: "code.example.com:3443" # Full host:port for URL generation
|
|
|
|
# ── Authentication (REQUIRED) ───────────────────────────────────────────────
|
|
# These values are MANDATORY. The server will refuse to start without them.
|
|
# Store them in environment variables — never commit secrets to this file.
|
|
auth:
|
|
jwtSecret: "${DTP_JWT_SECRET}" # JSON Web Token signing key
|
|
passwordSalt: "${DTP_USER_PASSWORD_SALT}" # Per-instance password hashing salt
|
|
|
|
# ── Session Configuration (REQUIRED) ─────────────────────────────────────────
|
|
# Express session stored in Redis via connect-redis.
|
|
session:
|
|
secret: "${DTP_SESSION_SECRET}" # Session signing key
|
|
trustProxy: true # Set true if behind a reverse proxy
|
|
cookie:
|
|
secure: true # Set true for HTTPS (required for SameSite=strict)
|
|
sameSite: "strict" # strict | lax | none
|
|
|
|
# ── Google Custom Search Engine (REQUIRED) ──────────────────────────────────
|
|
# Used by the drone's search_google tool for web search capabilities.
|
|
google:
|
|
cse:
|
|
apiKey: "${GOOGLE_CSE_API_KEY}" # Google API key with CSE enabled
|
|
engineId: "${GOOGLE_CSE_ENGINE_ID}" # Your custom search engine ID
|
|
|
|
# ── MongoDB Configuration ───────────────────────────────────────────────────
|
|
# The platform stores projects, chat sessions, users, providers, and drones here.
|
|
mongodb:
|
|
host: "localhost:27017" # MongoDB host:port
|
|
database: "gadget-code" # Database name
|
|
|
|
# ── Redis Configuration ─────────────────────────────────────────────────────
|
|
# Used for Express session storage (connect-redis) and caching.
|
|
redis:
|
|
host: "localhost"
|
|
port: 6379
|
|
password: "${REDIS_PASSWORD}" # Omit if Redis has no auth
|
|
keyPrefix: "gcode:" # Prefix for all keys in this instance
|
|
lazyConnect: false # Connect immediately on startup
|
|
|
|
# ── HTTPS Configuration ─────────────────────────────────────────────────────
|
|
# The platform server runs HTTPS directly. Place your cert and key on disk.
|
|
https:
|
|
enabled: true
|
|
address: "0.0.0.0" # Bind address (0.0.0.0 for all interfaces)
|
|
port: 3443 # Default HTTPS port
|
|
backlog: 128 # TCP backlog
|
|
keyFile: "/etc/ssl/gadget-code/key.pem" # Private key
|
|
crtFile: "/etc/ssl/gadget-code/cert.pem" # Certificate (full chain)
|
|
uploadPath: "/tmp/gadget-code" # Temp directory for file uploads
|
|
|
|
# ── Socket.IO Configuration ─────────────────────────────────────────────────
|
|
# Real-time communication between IDE, platform, and drones.
|
|
socket:
|
|
maxHttpBufferSize: 10485760 # 10 MB — max message size
|
|
|
|
# ── Logging Configuration ───────────────────────────────────────────────────
|
|
# Logs follow XDG Base Directory spec by default.
|
|
logging:
|
|
console:
|
|
enabled: true # Print to stdout/stderr
|
|
file:
|
|
enabled: true
|
|
path: "~/.local/state/gadget-code/logs" # Supports ~ expansion
|
|
name: "gadget-code"
|
|
maxWritesPerFile: 10000 # Rotate after this many writes
|
|
maxFiles: 10 # Keep this many rotated files
|
|
https:
|
|
enabled: true # HTTP access log (morgan format)
|
|
name: "gadget-code.https.log"
|
|
path: "~/.local/state/gadget-code/logs"
|
|
format: "combined" # morgan log format name
|
|
levels:
|
|
debug: true # Set false in production for less noise
|
|
info: true
|
|
warn: true
|
|
|
|
# ── Email Configuration (OPTIONAL) ──────────────────────────────────────────
|
|
# Enable for contact form submissions, password resets, and notifications.
|
|
email:
|
|
enabled: false
|
|
smtp:
|
|
host: "smtp.example.com"
|
|
port: 587
|
|
secure: false # true for port 465
|
|
from: "Gadget Code <noreply@example.com>"
|
|
user: "smtp-user"
|
|
password: "${SMTP_PASSWORD}"
|
|
pool:
|
|
enabled: true
|
|
maxConnections: 5
|
|
maxMessages: 100
|
|
contact:
|
|
to: "Support <support@example.com>"
|
|
|
|
# ── MinIO / S3 Configuration (OPTIONAL) ─────────────────────────────────────
|
|
# Object storage for uploaded files, images, videos, and audio.
|
|
minio:
|
|
endpoint: "localhost"
|
|
port: 9000
|
|
useSsl: false
|
|
accessKey: "minio-access-key"
|
|
secretKey: "${MINIO_SECRET_KEY}"
|
|
buckets:
|
|
uploads: "gadget-uploads"
|
|
images: "gadget-images"
|
|
videos: "gadget-videos"
|
|
audios: "gadget-audios"
|
|
|
|
# ── Qdrant Vector Database (COMING SOON) ────────────────────────────────────
|
|
# Used for semantic search over chat history and conversation context.
|
|
# Enable when the Qdrant integration is released.
|
|
#
|
|
# qdrant:
|
|
# host: "localhost"
|
|
# port: 6333
|
|
# apiKey: "${QDRANT_API_KEY}"
|
|
# collection: "gadget-chat-embeddings"
|