- Add app/llm/router.py shim — tri-level config lookup: repo config/llm.yaml → ~/.config/circuitforge/llm.yaml → env vars - Add config/llm.cloud.yaml — ollama via cf-orch, llama3.1:8b - Add config/llm.yaml.example — self-hosted reference config - compose.cloud.yml: mount llm.cloud.yaml, set CF_ORCH_URL, add host.docker.internal:host-gateway (required on Linux Docker) - api/main.py: use app.llm.router.LLMRouter (shim) not core directly - .env.example: update LLM section to reference config/llm.yaml.example - .gitignore: exclude config/llm.yaml (keep example + cloud yaml) End-to-end tested: 3.2s for "used RTX 3080 under $400, no mining cards" via cloud container → host.docker.internal:11434 → Ollama llama3.1:8b
101 lines
5.6 KiB
Text
101 lines
5.6 KiB
Text
# Snipe works out of the box with the scraper (no credentials needed).
|
|
# Set eBay API credentials to unlock full trust scores —
|
|
# account age and category history signals require the eBay Browse API.
|
|
# Without credentials the app logs a warning and falls back to the scraper.
|
|
|
|
# ── eBay Developer Keys — Production ──────────────────────────────────────────
|
|
# From https://developer.ebay.com/my/keys (Production tab)
|
|
EBAY_APP_ID=
|
|
EBAY_DEV_ID=
|
|
EBAY_CERT_ID=
|
|
|
|
# ── eBay Developer Keys — Sandbox ─────────────────────────────────────────────
|
|
# From https://developer.ebay.com/my/keys (Sandbox tab)
|
|
EBAY_SANDBOX_APP_ID=
|
|
EBAY_SANDBOX_DEV_ID=
|
|
EBAY_SANDBOX_CERT_ID=
|
|
|
|
# ── Active environment ─────────────────────────────────────────────────────────
|
|
# production | sandbox
|
|
EBAY_ENV=production
|
|
|
|
# ── eBay Account Deletion Webhook ──────────────────────────────────────────────
|
|
# Register endpoint at https://developer.ebay.com/my/notification — required for
|
|
# production key activation. Set EBAY_NOTIFICATION_ENDPOINT to the public HTTPS
|
|
# URL eBay will POST to (e.g. https://snipe.circuitforge.tech/api/ebay/account-deletion).
|
|
EBAY_NOTIFICATION_TOKEN=
|
|
EBAY_NOTIFICATION_ENDPOINT=
|
|
# Set to false during sandbox/registration (no production token available yet).
|
|
# Set to true once production credentials are active — enforces ECDSA verification.
|
|
EBAY_WEBHOOK_VERIFY_SIGNATURES=true
|
|
|
|
# ── Database ───────────────────────────────────────────────────────────────────
|
|
SNIPE_DB=data/snipe.db
|
|
|
|
# ── Cloud mode (managed / menagerie instance only) ─────────────────────────────
|
|
# Leave unset for self-hosted / local use. When set, per-user DB isolation
|
|
# and Heimdall licensing are enabled. compose.cloud.yml sets CLOUD_MODE=true
|
|
# automatically — only set manually if running without Docker.
|
|
|
|
# CLOUD_MODE=true
|
|
# CLOUD_DATA_ROOT=/devl/snipe-cloud-data
|
|
|
|
# JWT secret from cf-directus (must match Directus SECRET env var exactly).
|
|
# DIRECTUS_JWT_SECRET=
|
|
|
|
# Heimdall license server — for tier resolution and free-key auto-provisioning.
|
|
# HEIMDALL_URL=https://license.circuitforge.tech
|
|
# HEIMDALL_ADMIN_TOKEN=
|
|
|
|
# ── eBay Affiliate (optional) ─────────────────────────────────────────────────
|
|
# Set to your eBay Partner Network (EPN) campaign ID to earn commissions on
|
|
# listing click-throughs. Leave blank for clean /itm/ URLs (no tracking).
|
|
# Register at https://partnernetwork.ebay.com — self-hosted users can use their
|
|
# own ID; the CF cloud instance uses CF's campaign ID (disclosed in the UI).
|
|
# EBAY_AFFILIATE_CAMPAIGN_ID=
|
|
|
|
# ── LLM inference (Search with AI / photo analysis) ──────────────────────────
|
|
# For self-hosted use, create config/llm.yaml from config/llm.yaml.example.
|
|
# config/llm.yaml is the preferred way to configure backends (supports cf-orch,
|
|
# multiple fallback backends, per-backend model selection).
|
|
#
|
|
# As a quick alternative, circuitforge-core LLMRouter also auto-detects backends
|
|
# from these env vars when no llm.yaml is present:
|
|
# 1. ANTHROPIC_API_KEY → Claude API (cloud; requires Paid tier key)
|
|
# 2. OPENAI_API_KEY → OpenAI-compatible endpoint
|
|
# 3. OLLAMA_HOST → local Ollama (default: http://localhost:11434)
|
|
# Leave all unset to disable LLM features (Search with AI won't be available).
|
|
|
|
# ANTHROPIC_API_KEY=
|
|
# ANTHROPIC_MODEL=claude-haiku-4-5-20251001
|
|
|
|
# OPENAI_API_KEY=
|
|
# OPENAI_BASE_URL=https://api.openai.com/v1
|
|
# OPENAI_MODEL=gpt-4o-mini
|
|
|
|
# OLLAMA_HOST=http://localhost:11434
|
|
# OLLAMA_MODEL=llava:7b
|
|
|
|
# CF Orchestrator — routes vision/LLM tasks to a cf-orch coordinator for VRAM management.
|
|
# Self-hosted: point at a local cf-orch coordinator if you have one running.
|
|
# Cloud (internal): managed coordinator at orch.circuitforge.tech.
|
|
# Leave unset to run vision tasks inline (no VRAM coordination).
|
|
# CF_ORCH_URL=http://10.1.10.71:7700
|
|
#
|
|
# cf-orch agent (compose --profile orch) — coordinator URL for the sidecar agent.
|
|
# Defaults to CF_ORCH_URL if unset.
|
|
# CF_ORCH_COORDINATOR_URL=http://10.1.10.71:7700
|
|
|
|
# ── Community DB (optional) ──────────────────────────────────────────────────
|
|
# When set, seller trust signals (confirmed scammers added to blocklist) are
|
|
# published to the shared community PostgreSQL for cross-user signal aggregation.
|
|
# Managed instances: set automatically by cf-orch. Self-hosted: leave unset.
|
|
# Requires cf-community-postgres container (cf-orch compose stack).
|
|
# COMMUNITY_DB_URL=postgresql://cf_community:<password>@localhost:5432/cf_community
|
|
|
|
# ── In-app feedback (beta) ────────────────────────────────────────────────────
|
|
# When set, a feedback FAB appears in the UI and routes submissions to Forgejo.
|
|
# Leave unset to silently hide the button (demo/offline deployments).
|
|
# FORGEJO_API_TOKEN=
|
|
# FORGEJO_REPO=Circuit-Forge/snipe
|
|
# FORGEJO_API_URL=https://git.opensourcesolarpunk.com/api/v1
|