CoinHunter trading CLI with user runtime data in ~/.coinhunter
Project description
Runtime-safe trading operations, precheck orchestration, review tooling, and market probes.
What is this?
coinhunter-cli is the executable tooling layer for CoinHunter — an installable Python CLI that handles trading operations, market probes, precheck orchestration, and review workflows.
| Layer | Responsibility | Location |
|---|---|---|
| CLI | Top-level command router | cli.py |
| Commands | Thin argument adapters | commands/ |
| Services | Orchestration & execution logic | services/ |
| Runtime | Paths, env, locks, config | runtime.py |
| User Data | State, logs, reviews, positions | ~/.coinhunter/ |
Separation of concerns: Code lives in this repo. Your data lives in
~/.coinhunter/. Strategy and prompting live in Hermes skills.
Project Structure
src/coinhunter/
├── cli.py # Unified command router
├── runtime.py # Runtime paths + env loading
├── logger.py # Structured logging utilities
├── commands/ # CLI adapters (thin, stateless)
│ ├── precheck.py
│ ├── smart_executor.py
│ ├── check_api.py
│ ├── doctor.py
│ ├── external_gate.py
│ ├── init_user_state.py
│ ├── market_probe.py
│ ├── paths.py
│ ├── review_context.py
│ ├── review_engine.py
│ └── rotate_external_gate_log.py
├── services/ # Orchestration & domain logic
│ ├── exchange_service.py
│ ├── portfolio_service.py
│ ├── trade_execution.py
│ ├── smart_executor_service.py
│ ├── smart_executor_parser.py
│ ├── execution_state.py
│ ├── precheck_service.py
│ ├── review_service.py # review generation logic
│ ├── precheck_constants.py # thresholds
│ ├── time_utils.py # UTC/local time helpers
│ ├── data_utils.py # json, hash, float, symbol norm
│ ├── state_manager.py # state load/save/sanitize
│ ├── market_data.py # exchange, OHLCV, metrics
│ ├── candidate_scoring.py # coin selection & scoring
│ ├── snapshot_builder.py # precheck snapshot construction
│ ├── adaptive_profile.py # trigger profile builder
│ ├── trigger_analyzer.py # trigger analysis core
│ ├── precheck_analysis.py # failure payloads
│ ├── precheck_snapshot.py # snapshot facade
│ ├── precheck_state.py # state facade
│ └── precheck_core.py # backward-compat export facade
├── precheck.py # Backward-compat root facade
├── smart_executor.py # Backward-compat root facade
└── *.py # Other compat / utility modules
Installation
Standard install
pip install -e .
This creates the coinhunter console script entry point as defined in pyproject.toml.
Quick install script
./scripts/install_local.sh
A thin wrapper that runs pip install -e . and verifies the entrypoint is on your PATH.
Verify:
coinhunter --help
coinhunter --version
Command Reference
Short aliases (recommended)
coinhunter diag # runtime diagnostics
coinhunter paths # print resolved paths
coinhunter api-check # validate exchange credentials
coinhunter precheck # run precheck snapshot + trigger analysis
coinhunter exec bal # print balances as JSON
coinhunter exec overview # account overview as JSON
coinhunter exec hold # record a HOLD decision
coinhunter exec buy ENJUSDT 50 # buy $50 of ENJUSDT
coinhunter exec flat ENJUSDT # sell entire ENJUSDT position
coinhunter exec rotate PEPEUSDT ETHUSDT # rotate exposure
coinhunter exec orders # list open spot orders
coinhunter exec order-status ENJUSDT 123456 # check specific order
coinhunter exec cancel ENJUSDT 123456 # cancel an open order
coinhunter gate # external gate orchestration
coinhunter review 12 # generate review context (last 12h)
coinhunter recap 12 # generate review report (last 12h)
coinhunter probe bybit-ticker BTCUSDT # market probe
coinhunter rotate-log # rotate external gate logs
Legacy long forms (still supported)
coinhunter doctor
coinhunter check-api
coinhunter smart-executor bal
coinhunter review-context 12
coinhunter review-engine 12
coinhunter market-probe bybit-ticker BTCUSDT
coinhunter external-gate
coinhunter rotate-external-gate-log
All supported commands
| Canonical | Aliases |
|---|---|
check-api |
api-check |
doctor |
diag |
external-gate |
gate |
init |
— |
market-probe |
probe |
paths |
— |
precheck |
— |
review-context |
review |
review-engine |
recap |
rotate-external-gate-log |
rotate-gate-log, rotate-log |
smart-executor |
exec |
Quickstart
Initialize runtime state:
coinhunter init
Inspect the environment:
coinhunter paths
coinhunter diag
Validate API keys:
coinhunter api-check
Run the precheck workflow:
coinhunter precheck
coinhunter precheck --ack "analysis completed"
Run the external gate:
coinhunter gate
The gate reads trigger_command from ~/.coinhunter/config.json under external_gate.
- By default, no external trigger is configured — gate runs precheck and marks state, then exits cleanly.
- Set
trigger_commandto a command list to integrate with your own scheduler:
{
"external_gate": {
"trigger_command": ["hermes", "cron", "run", "JOB_ID"]
}
}
- Set to
nullor[]to explicitly disable the external trigger.
Dynamic tuning via config.json
You can override internal defaults without editing code by adding keys to ~/.coinhunter/config.json:
{
"external_gate": {
"trigger_command": ["hermes", "cron", "run", "JOB_ID"]
},
"exchange": {
"min_quote_volume": 200000,
"cache_ttl_seconds": 3600
},
"logging": {
"schema_version": 2
}
}
| Key | Default | Effect |
|---|---|---|
exchange.min_quote_volume |
200000 |
Minimum 24h quote volume for a symbol to appear in market snapshots |
exchange.cache_ttl_seconds |
3600 |
How long the ccxt exchange instance (and load_markets() result) is cached |
logging.schema_version |
2 |
Schema version stamped on every JSONL log entry |
Runtime Model
Default data layout:
~/.coinhunter/
├── config.json
├── positions.json
├── accounts.json
├── watchlist.json
├── notes.json
├── executions.json
├── logs/
├── reviews/
├── cache/
└── state/
├── precheck_state.json
└── external_gate.lock
Credential resolution:
- Binance API keys are read from
~/.hermes/.envby default. - Override with
COINHUNTER_ENV_FILE. - Override home with
COINHUNTER_HOMEorHERMES_HOME. hermesbinary is resolved fromPATH, then~/.local/bin/hermes, unlessHERMES_BINis set.
Development Status
The codebase is actively maintained and refactored in small, safe steps.
Recently completed:
- ✅ Unified CLI entrypoint with short aliases
- ✅ Extracted
smart-executorintocommands/+services/ - ✅ Extracted
precheckinto 9 focused service modules - ✅ Migrated all active command modules into
commands/ - ✅ Extracted
review_engine.pycore logic intoservices/review_service.py - ✅ Removed eager
PATHSinstantiation across services and commands - ✅ Fixed
smart_executor.pylazy-loading facade - ✅ Standardized install to use
pip install -e . - ✅ Made
external_gatetrigger_command configurable (no longer hardcodes hermes) - ✅ Removed dead
auto-tradercommand - ✅ Backward-compatible root facades preserved
Next priorities:
- 🔧 Unify output contract (JSON-first with
--prettyoption) - 🔧 Add basic CI (lint + compileall + pytest)
Philosophy
CoinHunter is evolving toward:
- Professional execution — scientific position sizing, not moonshot gambling
- Maintainable architecture — clear boundaries between CLI, services, and domain logic
- Safer operations — dry-run, validation gates, and explicit decision logging
- Agent-friendly interfaces — stable JSON outputs and predictable command contracts
- Less dependence on prompt-only correctness — logic belongs in code, not just in system prompts
This repo is where that evolution happens.
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 coinhunter_cli-1.0.0.tar.gz.
File metadata
- Download URL: coinhunter_cli-1.0.0.tar.gz
- Upload date:
- Size: 55.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
95cf1df19ecbfb1af2ebf98578c1523290c84b61f30c08d9f94e25f589234d09
|
|
| MD5 |
22a9be3bdaa077999f1768d8f3ea1ef9
|
|
| BLAKE2b-256 |
8e186a71cc5df9f86aa0acbbdf97e623fc689311e058c3f48ee314fd36bb655f
|
File details
Details for the file coinhunter_cli-1.0.0-py3-none-any.whl.
File metadata
- Download URL: coinhunter_cli-1.0.0-py3-none-any.whl
- Upload date:
- Size: 60.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0a45ecb05a3845c63605e72ac174af81df2e3872800c9dfe815693e1b1494dc1
|
|
| MD5 |
8409718757bb5f25146f281e4c48f622
|
|
| BLAKE2b-256 |
7c2cb5dadf7722a19ab62d1d80df9402348766da9e158ab095f690a665e38421
|