Skip to main content

CoinHunter trading CLI with user runtime data in ~/.coinhunter

Project description


CoinHunter CLI

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_command to a command list to integrate with your own scheduler:
{
  "external_gate": {
    "trigger_command": ["hermes", "cron", "run", "JOB_ID"]
  }
}
  • Set to null or [] 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/.env by default.
  • Override with COINHUNTER_ENV_FILE.
  • Override home with COINHUNTER_HOME or HERMES_HOME.
  • hermes binary is resolved from PATH, then ~/.local/bin/hermes, unless HERMES_BIN is set.

Development Status

The codebase is actively maintained and refactored in small, safe steps.

Recently completed:

  • ✅ Unified CLI entrypoint with short aliases
  • ✅ Extracted smart-executor into commands/ + services/
  • ✅ Extracted precheck into 9 focused service modules
  • ✅ Migrated all active command modules into commands/
  • ✅ Extracted review_engine.py core logic into services/review_service.py
  • ✅ Removed eager PATHS instantiation across services and commands
  • ✅ Fixed smart_executor.py lazy-loading facade
  • ✅ Standardized install to use pip install -e .
  • ✅ Made external_gate trigger_command configurable (no longer hardcodes hermes)
  • ✅ Removed dead auto-trader command
  • ✅ Backward-compatible root facades preserved

Next priorities:

  • 🔧 Unify output contract (JSON-first with --pretty option)
  • 🔧 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

coinhunter_cli-1.0.0.tar.gz (55.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

coinhunter_cli-1.0.0-py3-none-any.whl (60.4 kB view details)

Uploaded Python 3

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

Hashes for coinhunter_cli-1.0.0.tar.gz
Algorithm Hash digest
SHA256 95cf1df19ecbfb1af2ebf98578c1523290c84b61f30c08d9f94e25f589234d09
MD5 22a9be3bdaa077999f1768d8f3ea1ef9
BLAKE2b-256 8e186a71cc5df9f86aa0acbbdf97e623fc689311e058c3f48ee314fd36bb655f

See more details on using hashes here.

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

Hashes for coinhunter_cli-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0a45ecb05a3845c63605e72ac174af81df2e3872800c9dfe815693e1b1494dc1
MD5 8409718757bb5f25146f281e4c48f622
BLAKE2b-256 7c2cb5dadf7722a19ab62d1d80df9402348766da9e158ab095f690a665e38421

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page