{ "_comment": [ "EXAMPLE workspace.json \u2014 copy to your FlintTrade home and edit.", "Locations: Linux ~/.flinttrade/workspace.json | macOS ~/Library/Application Support/flinttrade/workspace.json | Windows %APPDATA%/flinttrade/workspace.json (override with FLINTTRADE_HOME).", "This file is user configuration. Setup/Settings own native account settings; hardened app secrets live as ACL-locked files under your FlintTrade home.", "Secrets are NEVER stored in plaintext: *_ref fields name a keyring/env entry that is resolved at runtime. Leave them empty or point them at a reference; never paste a real token.", "FlintTrade writes this file with sorted keys on save, and creates it from defaults on first run \u2014 you usually do not need to hand-write it. The _comment keys are ignored by the config reader and safe to keep or delete.", "British spelling in any prose you add. Never commit your real workspace.json (it is gitignored)." ], "brokers": { "_comment": "Native broker wiring. Connect an available adapter and use its exact broker:account_id selector. Empty selectors leave broker data and execution unconfigured. account_acls maps exact account selectors to authorised actors.", "account_acls": {}, "cost_aware": { "enabled": false, "tasks": [] }, "data": { "global_indices": "", "historical": "", "option_chains": "", "quote": "", "ticks": "" }, "execution": { "default": "" }, "failover": { "enabled": false, "order": [] }, "rate_limits": { "_comment": "Optional per-broker API rate-limit overrides in requests/sec. Keys are broker ids (e.g. 'dhan:main'), each mapping to { \"order\": N, \"data\": M }. Omitted brokers/keys fall back to the adapter's built-in capability defaults; 0 means unlimited. Example: \"dhan:main\": { \"order\": 8, \"data\": 4 }." }, "registered": [], "smart_routing": { "_comment": "Liquidity-aware order slicing (POST /api/v1/orders/smart-route + the Smart Order widget). OFF by default; live mode only. Every child order still traverses the full gated execution path. twap_window_seconds/twap_slices tune low-urgency TWAP.", "enabled": false, "twap_slices": 5, "twap_window_seconds": 300 } }, "compliance": { "_comment": "Single-operator safety defaults. personal_use_mode true keeps the single-operator posture. ai_disclosure_banner shows the 'AI output is not investment advice' notice. static_ip is an optional, non-secret label for your own records — leave empty.", "ai_disclosure_banner": true, "personal_use_mode": true, "static_ip": "" }, "initialized": true, "ai": { "autonomous_agent": { "_comment": "The LLM-driven autonomous trading agent (AI route \u2192 Agent panel; /api/v1/ai/agent/*). OFF by default \u2014 it can place real orders in live mode. Enabling it also requires granting the 'autonomous-trader' actor access in brokers.account_acls; every agent order still traverses the full gated execution path.", "enabled": false } }, "llm": { "_comment": "Optional local or hosted LLM. provider/host/model are non-secret. api_key_ref names a keyring/env entry (e.g. 'env:ANTHROPIC_API_KEY') \u2014 never paste a real key here.", "api_key_ref": "", "host": "", "model": "", "provider": "" }, "markets": [], "modules": { "_comment": "Toggle optional subsystems. terminal/dashboard/screener/backtest are on by default; ai/ditto/automation are off until you opt in.", "ai": false, "automation": false, "backtest": true, "dashboard": true, "ditto": false, "screener": true, "terminal": true }, "notifications": { "_comment": "Telegram alerts are optional and off by default. telegram_bot_token_ref names a keyring/env entry \u2014 never paste the real bot token here. telegram_chat_id is your own chat id.", "telegram_bot_token_ref": "", "telegram_chat_id": "", "telegram_enabled": false }, "sebi": { "_comment": "Local safety limits. max_ops_per_second throttles order operations; audit_retention_years keeps the local audit log; kill_switch_enabled arms the engine kill switch.", "audit_retention_years": 5, "kill_switch_enabled": true, "max_ops_per_second": 10 }, "storage": { "_comment": [ "Data directories. The two values below are SENTINELS, not paths \u2014 do not 'fix' them for your OS.", "The exact strings '~/.flinttrade/data' and '~/.flinttrade/archive' are compared by string equality and mean 'the data/ and archive/ directories inside MY FlintTrade home', wherever that is: ~/.flinttrade on Linux, ~/Library/Application Support/flinttrade on macOS, %APPDATA%/flinttrade on Windows (or whatever FLINTTRADE_WORKSPACE_DIR / FLINTTRADE_HOME select).", "So on macOS and Windows these values do NOT write to a literal ~/.flinttrade \u2014 leave them exactly as written to keep the per-OS default.", "Any other value is taken literally: an absolute path, or a leading ~ for your home. Only change them if you genuinely keep data outside the workspace, and remember the uninstaller can only purge what it can resolve." ], "archive": "~/.flinttrade/archive", "fast": "~/.flinttrade/data" }, "ui": { "_comment": "Display preferences. theme is 'dark' or 'light'; default_exchange and timezone suit an Indian-market setup out of the box.", "default_exchange": "NSE", "theme": "dark", "timezone": "Asia/Kolkata" }, "version": "1.0.0" }