Kite Connect CLI — Multi-account Zerodha trading positions viewer
Project description
Kite Connect CLI (kitecli)
A multi-account Zerodha Kite Connect trading positions viewer with a beautiful interactive terminal user interface (TUI).
╦╔═╔═╗╦ ╦
╠╩╗║ ║ ║
╩ ╩╚═╝╩═╝╩
Kite Connect CLI
Key Features
- 🔒 Local-Only Architecture: No server layer, no database, no cloud deployment. Your Zerodha API credentials and session tokens stay strictly on your local machine.
- 👥 Multi-Account: View and manage open positions and order books from multiple Zerodha accounts in a single consolidated screen.
- ⚡ Parallelized Requests: All network calls (positions, orders, initialization) are executed concurrently in a thread pool, keeping updates extremely fast and fluid.
- 🔑 Auto-Login: Session tokens are cached securely in
~/.kcli/sessions.json. Using your credentials (user_id,password,totp_secret),kcliautomatically handles authentication and daily OTP generation in the background. - 🌐 Proxy Routing: Map different HTTP/HTTPS proxies to each account individually to comply with Zerodha API connection requirements.
- 📊 Interactive TUI Dashboard: Launch the live dashboard to view:
- Consolidated active positions with soft-color styling.
- Live indices panel (NIFTY 50, SENSEX, and INDIA VIX).
- Info Pane to view Pending Orders, Executed Orders, or Option Chains (
F1,F2,F3). - Active logs with color-coded alerts and focus highlights for simple navigation.
- 📡 Live WebSocket Streaming: Position LTPs/P&L, the market indices panel, and the option chain all update in real time over the Kite WebSocket (
KiteTicker) — no manual refresh needed. Order fills push an instant positions/orders re-sync. - 🎯 Primary Streaming Account: Market data (indices, option chain, and position prices) is streamed through a single designated primary account instead of redundantly subscribing on every account. Mark one account with
primary: truein the config, or letkcliauto-select the first streaming-capable account. Per-account positions, orders, and P&L remain fully independent. - 🩺 Streaming Diagnostics: On startup,
kcliprobes each account's WebSocket authentication. Accounts whoseapi_keylacks an active streaming subscription (REST works but the ticker is rejected with403) are reported clearly and skipped, preventing reconnect-error storms.
Installation
Install the package via pip:
pip install kitecli
(For local development or installing from source):
git clone https://github.com/chandu389/kitecli.git
cd kitecli
pip install -e .
Quick Start
1. Initialize Configuration
Create a default configuration template:
kcli config --init
This generates a config file at ~/.kcli/config.yaml.
2. Configure Accounts
Open ~/.kcli/config.yaml in your text editor and add your accounts. Include your login credentials and TOTP secrets to enable auto-login:
accounts:
- name: "Account 1"
api_key: "your_api_key_1"
api_secret: "your_api_secret_1"
user_id: "your_zerodha_user_id_1"
password: "your_zerodha_password_1"
totp_secret: "your_totp_secret_1"
proxy: "http://username:password@ip:port" # Optional per-account proxy
primary: true # Optional: use this account for streaming
- name: "Account 2"
api_key: "your_api_key_2"
api_secret: "your_api_secret_2"
user_id: "your_zerodha_user_id_2"
password: "your_zerodha_password_2"
totp_secret: "your_totp_secret_2"
proxy: "http://username:password@ip:port"
The primary flag (optional) designates which account streams the shared
market data — the indices panel, option chain, and position prices. Because an
instrument's price is the same regardless of which account holds it, streaming
it once through a single primary account avoids redundant duplicate
subscriptions. If primary is omitted (or the flagged account can't stream),
kcli automatically falls back to the first streaming-capable account.
Note on streaming: Live WebSocket streaming requires that the account's Kite Connect app has an active streaming subscription. An account can read positions over REST yet still be rejected by the WebSocket (
403) if its app lacks streaming access.kclidetects this on startup and reports it in the Status Logs.
3. Log In & Authenticate
Authenticate and start your sessions (auto-login will run in the background for accounts with complete credentials):
kcli init
4. Run commands
- Interactive Dashboard:
kcli live - Positions Snapshot:
kcli positions - Status Check:
kcli status
CLI Command Reference
| Command | Description |
|---|---|
kcli live |
Launch the interactive live TUI dashboard |
kcli init |
Initialize and authenticate account sessions |
kcli positions |
Print a quick snapshot of active positions |
kcli status |
Check authentication status of configured accounts |
kcli config --init |
Generate a default configuration file |
kcli config --show |
Display current configuration (secrets masked) |
kcli config --path |
Print the configuration file path |
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file kitecli-0.1.0b6.tar.gz.
File metadata
- Download URL: kitecli-0.1.0b6.tar.gz
- Upload date:
- Size: 52.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bbbd7a85f953757b517eb3d4a352980678654bbd1ae108ac7ffc5eb62066f7b4
|
|
| MD5 |
9388b383151ae418f191f5d1ae391f6f
|
|
| BLAKE2b-256 |
dcad3f5d7dc5c826c72b5fbfd09cf691a77f614acb4bcd107f9a313e1bb07df1
|
File details
Details for the file kitecli-0.1.0b6-py3-none-any.whl.
File metadata
- Download URL: kitecli-0.1.0b6-py3-none-any.whl
- Upload date:
- Size: 52.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
722f2b36a334a352ee2b718cb220246d3aeae6199050bd868d5ff4d60249b280
|
|
| MD5 |
c78e90ee44afbf8d6ba2f990f7ea9988
|
|
| BLAKE2b-256 |
e89dc01e50d500151657a706c691260a9de50d25773b0c21738080866e056888
|