{"id":44475927,"url":"https://github.com/chainstacklabs/kuru-copy-trading-bot","last_synced_at":"2026-02-12T22:34:00.124Z","repository":{"id":326183823,"uuid":"1091854262","full_name":"chainstacklabs/kuru-copy-trading-bot","owner":"chainstacklabs","description":"Copy trading bot and learning examples for Kuru DEX","archived":false,"fork":false,"pushed_at":"2025-12-12T18:24:27.000Z","size":203,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-12-14T08:42:05.642Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chainstacklabs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-07T16:07:44.000Z","updated_at":"2025-12-12T18:24:31.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/chainstacklabs/kuru-copy-trading-bot","commit_stats":null,"previous_names":["chainstacklabs/kuru-copy-trading-bot"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/chainstacklabs/kuru-copy-trading-bot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chainstacklabs%2Fkuru-copy-trading-bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chainstacklabs%2Fkuru-copy-trading-bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chainstacklabs%2Fkuru-copy-trading-bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chainstacklabs%2Fkuru-copy-trading-bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chainstacklabs","download_url":"https://codeload.github.com/chainstacklabs/kuru-copy-trading-bot/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chainstacklabs%2Fkuru-copy-trading-bot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29383984,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-12T22:07:52.078Z","status":"ssl_error","status_checked_at":"2026-02-12T22:07:49.026Z","response_time":55,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-12T22:33:59.599Z","updated_at":"2026-02-12T22:34:00.119Z","avatar_url":"https://github.com/chainstacklabs.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg width=\"1200\" alt=\"Labs\" src=\"https://user-images.githubusercontent.com/99700157/213291931-5a822628-5b8a-4768-980d-65f324985d32.png\"\u003e\n\n\u003cp\u003e\n \u003ch3 align=\"center\"\u003eChainstack is the leading suite of services connecting developers with Web3 infrastructure\u003c/h3\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  • \u003ca target=\"_blank\" href=\"https://chainstack.com/\"\u003eHomepage\u003c/a\u003e •\n  \u003ca target=\"_blank\" href=\"https://chainstack.com/protocols/\"\u003eSupported protocols\u003c/a\u003e •\n  \u003ca target=\"_blank\" href=\"https://chainstack.com/blog/\"\u003eChainstack blog\u003c/a\u003e •\n  \u003ca target=\"_blank\" href=\"https://docs.chainstack.com/quickstart/\"\u003eBlockchain API reference\u003c/a\u003e • \u003cbr\u003e \n  • \u003ca target=\"_blank\" href=\"https://console.chainstack.com/user/account/create\"\u003eStart for free\u003c/a\u003e •\n\u003c/p\u003e\n\n## Kuru copy trading bot\n\n\u003e Educational project with optimization opportunities. Multiple RPC calls per signal introduce latency between source order and bot execution.\n\nCopy trading bot for Kuru DEX on Monad blockchain. Monitors specified wallets and Kuru DEX markets and mirrors their **limit orders** via direct smart contract interaction (Kuru margin account, Kuru markets).\n\nPlease feel free to submit your feedback and requests to issues.\n\n## What gets copied\n\nThe bot listens to `OrderCreated`, `Trade` and `OrdersCanceled` events and mirrors an action (places and cancels orders). `Trade` event is used to log activity for statistics.\n\nMarket orders are not supported.\n\n## Installation\n\n```bash\ngit clone https://github.com/chainstacklabs/kuru-copy-trading-bot\ncd kuru-copy-trading-bot\nuv sync\n```\n\n## Important: margin account setup\n\nThe bot trades using your Kuru margin account balance, not wallet balance. Before running, deposit tokens to your margin account. See [margin account management](#margin-account-management) for instructions and helper scripts.\n\n## Configuration\n\nCopy `.env.example` to `.env` and configure:\n- RPC endpoint (WebSocket)\n- Source wallet addresses\n- Market addresses\n- Copy ratio and risk limits\n\n## Usage\n\n```bash\n# Run bot\nuv run python -m src.kuru_copytr_bot.main\n\n# Custom config\nuv run python -m src.kuru_copytr_bot.main --env-file .env.prod\n\n# Debug logging\nuv run python -m src.kuru_copytr_bot.main --log-level DEBUG\n\n# JSON logs\nuv run python -m src.kuru_copytr_bot.main --json-logs\n```\n\nStop with `Ctrl+C`.\n\n## Development\n\nInstall dev dependencies:\n```bash\nuv sync --extra dev\n```\n\nLint and format:\n```bash\nuvx ruff check --fix .\nuvx ruff format .\nuvx mypy src/\n```\n\nRun tests:\n```bash\nuv run pytest\nuv run pytest --cov\n```\n\nInstall pre-commit hooks:\n```bash\nuv run pre-commit install\n```\n\n## Requirements\n\n- Python 3.10+\n- uv package manager\n- Monad RPC access (WebSocket endpoint)\n- Private key with MON for gas\n\n## Margin account management\n\n### Understanding margin accounts\n\nKuru DEX uses margin accounts for trading. The bot checks your margin balance (not wallet balance) when placing orders. Before starting, deposit tokens from your wallet to your margin account. Each market requires a specific quote asset - verify which token your target markets use.\n\nOrders are skipped if margin balance is insufficient. The bot continues monitoring and resumes placing orders when balance is available.\n\n### Helper scripts\n\nThree scripts in `scripts/` directory manage margin accounts:\n\n- **check_margin_balance.py** - view margin balances\n- **deposit_margin.py** - transfer tokens from wallet to margin account\n- **withdraw_margin.py** - transfer tokens from margin account to wallet\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchainstacklabs%2Fkuru-copy-trading-bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchainstacklabs%2Fkuru-copy-trading-bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchainstacklabs%2Fkuru-copy-trading-bot/lists"}