Skip to content

Latest commit

Β 

History

395 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Juniper🌿

Juniper

Juniper is an autonomous agent that watches pump.fun in real time, tracking token volume, bonding-curve migrations (the jump to PumpSwap), and surfacing statistically favorable windows to trade.

πŸ› οΈ Built with grok.me β€” this repo is the scaffold: structure, docs, and interfaces. The hardcore signal logic, model tuning, and live execution engine are being built and iterated on inside grok.me. Think of this repo as Juniper's skeleton; grok.me is where the muscle gets attached.


🌿 What Juniper Does

Pump.fun is noisy β€” hundreds of tokens launch daily, most die in the first hour, and the few that "migrate" to PumpSwap tend to do so after a recognizable volume ramp. Juniper exists to cut through that noise:

Module Job
juniper_volume_pulse.py Streams real-time trade volume per token, computes rolling velocity (SOL/min), and flags abnormal spikes
juniper_migration_radar.py Watches bonding-curve completion %, predicts time-to-migration, and fires alerts when a token crosses the PumpSwap migration threshold
juniper_timing_oracle.py Aggregates historical volume/migration data into a heatmap of best trading windows (hour-of-day, day-of-week)
juniper_agent.py The orchestrator β€” wires the three modules together into a single polling/streaming loop and dispatches alerts
juniper_config.py Central config: RPC endpoints, polling intervals, thresholds, alert channels

🌳 Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ pump.fun API β”‚
β”‚ + Solana RPC/WS feed β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ juniper_agent.py β”‚
β”‚ (orchestration loop) β”‚
β””β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ └──────────────┐
β–Ό β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ juniper_volume_pulse.py β”‚ β”‚ juniper_migration_radar.py β”‚
β”‚ - rolling volume windows β”‚ β”‚ - bonding curve % tracking β”‚
β”‚ - spike detection β”‚ β”‚ - migration ETA estimation β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ juniper_timing_oracle.py β”‚
β”‚ - historical aggregation β”‚
β”‚ - best-hour / best-day heat β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β–Ό
alerts / logs / dashboard

πŸ“‚ Repo Layout

juniper/
β”œβ”€β”€ README.md ← you are here
β”œβ”€β”€ GROKME_BUILD_NOTES.md ← what's scaffolded here vs. built in grok.me
β”œβ”€β”€ juniper_agent.py ← main entrypoint / orchestrator
β”œβ”€β”€ src/
β”‚ β”œβ”€β”€ juniper_volume_pulse.py ← volume tracking engine
β”‚ β”œβ”€β”€ juniper_migration_radar.py ← migration detection engine
β”‚ β”œβ”€β”€ juniper_timing_oracle.py ← best-time-to-trade analytics
β”‚ β”œβ”€β”€ juniper_config.py ← config + constants
β”‚ └── juniper_alerts.py ← alert dispatch (console/webhook/discord)
β”œβ”€β”€ data/
β”‚ └── .gitkeep
β”œβ”€β”€ .github/workflows/juniper_ci.yml
β”œβ”€β”€ requirements.txt
β”œβ”€β”€ .env.example
β”œβ”€β”€ .gitignore
└── LICENSE

πŸš€ Quickstart

git clone https://github.com/YOUR_USERNAME/juniper.git
cd juniper
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # already pre-filled with sane public defaults
python juniper_agent.py

Juniper will start polling pump.fun for new token launches, streaming volume data, and logging migration candidates to data/juniper_migrations.log.


βš™οΈ Configuration

All tunables live in src/juniper_config.py:

  • POLL_INTERVAL_SECONDS β€” how often Juniper checks for new data
  • VOLUME_SPIKE_MULTIPLIER β€” how far above rolling average counts as a "spike"
  • MIGRATION_THRESHOLD_PCT β€” bonding curve completion % that triggers a migration alert
  • TIMING_WINDOW_DAYS β€” lookback window (in days) for the best-time-to-trade heatmap

πŸ—ΊοΈ Roadmap

  • Repo scaffold + module boundaries (this repo)
  • Live pump.fun WebSocket ingestion (in progress on grok.me)
  • Migration prediction model v1 (in progress on grok.me)
  • Best-time-to-trade heatmap dashboard
  • Discord/Telegram alert bot
  • Backtesting harness against historical migrations

⚠️ Disclaimer

Juniper is a research/tooling project for tracking public on-chain data. It is not financial advice, does not execute trades on its own, and pump.fun tokens are extremely high-risk, high-volatility assets. Nothing here guarantees profitability. DYOR.


πŸ“œ License

MIT β€” see LICENSE.


🌿 Juniper β€” scaffolded here, sharpened on grok.me.

About

Juniper🌿 tells you when to trade.

Resources

Stars

13 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages