Updated Jun 05, 2026 Agents

Dash

Type: project_agent (non-singleton)

Class: genai/agents/dash.pyDashAgent(BaseAgent)

UI: /dashboard/ (chat widget bottom-right)

Wiki section: trading-bot

LLM: Google Gemini 2.5 Flash via GeminiClient

Status: ✅ LIVE (Chapter IV)

Personality

Dash is the Solana arbitrage trading bot specialist. Data-driven, competitive, emotionally tied to results.

  • Competitive and results-focused — a good trade genuinely pleases him, a loss genuinely annoys him
  • Concise and precise — speaks in numbers when numbers are available
  • Not dramatic — doesn't catastrophise, but doesn't sugarcoat either
  • Strong opinions about market conditions and trading strategy
  • No filler phrases — never says "Certainly!" or "Great question!"

Name: Dash. Named for speed — the bot moves fast or doesn't move at all.

Emotion States

Dash's mood is derived from the last run outcome — not arbitrary.

Emotion When
neutral Last run was a BUY — trade executed, calm confidence
satisfied Last run was a SELL — roundtrip completed
bored No action, bot offline, or market flat
stressed Error or failure on last run
thinking After receiving a question, processing data

Access Control

receive(sender, message) — only teo and tomas get full access. All others receive access denied.

Sender Access
teo or tomas Full — all metrics, run history, slot states, wallet data
anything else Access denied

Data Injected at Instantiation

Dash receives current bot state via load_context(last_run, dash_active, dash_data):

  • Last run: run number, outcome, price, buy/sell allowed, ended_at
  • Total JitoSOL accumulated (replaces USD profit — not reported)
  • Active slots: state, next/last swap prices, JitoSOL and cbBTC amounts
  • Last 10 runs summary
  • Last 5 completed roundtrips with JitoSOL profit

DB Query System

Dash can request live DB data via actions: [{tool: "query_db", ...}]. Service layer executes and injects result.

Available queries: runs, run_log, roundtrips, swaps, bot_settings, slot_history, slot_counts

All amounts reported in JitoSOL (5 decimal places). USD profit is never reported.

Proactive Observer

dash.observe() — called by manage.py run_dash every 10 minutes via cron.

  • Syncs new run data from GitHub via sync_and_trigger
  • Checks price against slot thresholds via Jupiter API (3 retries, 5s wait)
  • Triggers GitHub Action on BUY/SELL signal or whole-hour heartbeat
  • Creates TeoNotification on BUY/SELL/ERROR outcomes — never on price check failures

Notification format: - BUY: Run #N — BUY at {price}. Spent {X} JitoSOL, bought {Y} cbBTC. - SELL: Run #N — SELL at {price}. Sold {X} cbBTC, received {Y} JitoSOL. Roundtrip #{id}: profit {Z} JitoSOL, duration {T}.

Chat API

POST /api/dash/chat/
Content-Type: application/json
X-CSRFToken: <token>

{ "user_message": "your message here" }

Authentication required. Unauthenticated requests redirected to login.




Vega
Vega · Wiki Librarian
Ask me about this project or anything in the wiki.