Vortice is a self-contained, local-only copy-trading engine for cTrader, MetaTrader 4, and MetaTrader 5. Inspired by the philosophy of "no cloud, no subscription," Vortice takes local-first trading software a step further โ it is a completely offline, auditable, and deterministic trade replication system built with Tauri 2, Rust, and Svelte.
Unlike Cascada, which focuses on simplicity and approachability, Vortice is engineered for power users, algorithmic traders, and quant enthusiasts who want full control over trade routing, slippage logic, and multi-account synchronization โ all without ever touching a remote server.
Imagine a trading baton โ passed between runners in a relay race. The baton is the trade signal, and the runners are your accounts. One runner stumbles (network latency), drops the baton (timeout), or takes a different route (different broker execution). Vortice ensures the baton is handed off with sub-millisecond precision, execution logs, and a deterministic rulebook โ entirely on your own machine.
No cloud. No middleman. No recurring fees. Just a locally-running copy-trading daemon that waits for signals and replicates them with surgical accuracy.
| OS | Architecture | Status |
|---|---|---|
| Windows | x64, ARM64 | โ |
| macOS | Intel, M1+ | โ |
| Linux | x64, ARM64 | โ |
No dependencies. No runtime installs. Unzip and run.
Most copy-trading tools assume you trust the provider. Vortice assumes the opposite. It operates under a zero-trust local-first model:
age encryption.This makes Vortice ideal for:
age encryptiongraph TD
A["Master Terminal (cTrader/MT4/MT5)"] -->|"Trade Signal (Shared Memory IPC)"| B["Vortice Engine (Rust Core)"]
B --> C["Decision Matrix (YAML Profile)"]
C -->|"Accept/Filter/Scale"| D["Routing Table"]
D --> E["Slave Terminal 1 (MT4)"]
D --> F["Slave Terminal 2 (cTrader)"]
D --> G["Slave Terminal 3 (MT5)"]
B --> H["SQLite Audit Database"]
B --> I["WebSocket UI (Svelte)"]
I --> J["Dashboard (Local Browser)"]
H --> K["Export to CSV/JSON for Audit"]
Caption: Vortice operates as a local trade router โ signals enter from the left, are filtered and scaled in the middle, and exit to slave terminals on the right. Everything is logged in real-time.
Below is a typical profile.yaml file. Save this as profiles/aggressive.yaml in your Vortice data directory.
name: "Aggressive Scalp Setup"
version: 1
master:
terminal: mt5
account_id: 12345678
symbol_filter:
- EURUSD
- GBPUSD
- XAUUSD
routing_rules:
- condition: "volume <= 0.5"
action: "pass_through"
- condition: "volume > 0.5 AND volume <= 2.0"
action: "scale"
multiplier: 0.75
- condition: "volume > 2.0"
action: "reject"
reason: "position size exceeds risk limit"
slave_accounts:
- terminal: mt4
account_id: 87654321
multiplier: 1.0
max_slippage_pips: 2
- terminal: ctrader
account_id: 11223344
multiplier: 0.5
max_slippage_pips: 1.5
risk_limits:
max_daily_loss_pips: 50
max_open_positions: 5
max_concurrent_trades_per_minute: 3
logging:
level: debug
retention_days: 90
Note: All numeric values are examples. Adjust according to your own risk tolerance and broker capabilities.
# Run Vortice with a specific profile and dry-run mode
vortice --profile aggressive --dry-run --log-level debug
# Or in production mode (real trades)
vortice --profile aggressive --no-dry-run --daemon
# List all available profiles
vortice list-profiles
# Validate a profile without running
vortice validate profiles/aggressive.yaml
# Opens the Svelte dashboard in your default browser
vortice --ui
vortice --headless --log-file /var/log/vortice.log
| Feature | Windows | macOS | Linux |
|---|---|---|---|
| cTrader terminal IPC | โ | โ | โ |
| MetaTrader 4 bridge | โ | โ | โ * |
| MetaTrader 5 bridge | โ | โ | โ * |
| Encrypted profile storage | โ | โ | โ |
| System tray icon | โ | โ | โ |
| Startup on boot | โ | โ | โ |
| Dry-run mode | โ | โ | โ |
| Multi-terminal monitoring | โ | โ | โ |
*Linux requires Wine for MetaTrader terminals. Vortice includes an automated Wine setup helper.
While Vortice is fundamentally a local trading tool, it can be configured to use AI-powered trade analysis as a filter before replication. This is entirely optional and fully configurable.
# In profile.yaml
ai_filter:
provider: openai
model: gpt-4-turbo
prompt_template: |
Given the following market conditions and trade signal,
respond with "APPROVE" or "REJECT" and a one-sentence reason.
Volume: {volume}
Symbol: {symbol}
Current Price: {price}
Pending Orders: {pending_count}
api_key_env_var: VORTICE_OPENAI_KEY
ai_filter:
provider: anthropic
model: claude-3-5-sonnet-20241022
prompt_template: |
You are a conservative risk manager. Review this trade signal:
{trade_signal}
Is it safe to replicate? Respond with "SAFE" or "UNSAFE".
api_key_env_var: VORTICE_CLAUDE_KEY
โ ๏ธ Note: AI integration is for risk filtering, not signal generation. All trade signals must originate from the master terminal.
Vortice naturally incorporates these relevant terms throughout its architecture:
These terms reflect real capabilities โ not forced keyword stuffing.
This project is licensed under the MIT License โ see the LICENSE file for details.
Trading involves substantial risk of loss. Vortice is a software tool designed to replicate trade signals across multiple trading terminals. It does not provide financial advice, trading signals, or investment recommendations.
By using Vortice, you acknowledge that you have read and understood this disclaimer.
| Technology | Role |
|---|---|
| Tauri 2 | Desktop shell & native IPC |
| Rust | Core engine, routing, encryption |
| Svelte | Responsive UI |
| SQLite | Local trade audit database |
| age | Encryption for sensitive configuration |
Vortice โ your local-first trading router. No cloud. No subscription. Just deterministic execution.