TraderAI

Local Ollama-powered chat for UEX marketplace workflows.

What It Does

  • Searches active/current UEX marketplace listings through GET /marketplace_listings/.
  • Reads authenticated marketplace negotiations and negotiation messages when UEX_SECRET_KEY or UEX_BEARER_TOKEN is set.
  • Drafts negotiation messages and marketplace listings as pending actions.
  • Requires browser approval before sending authenticated write requests to UEX.
  • Maintains local SQLite memory with searchable recall for user facts, preferences, and prior chat context.
  • Can create one-time or recurring wake jobs that prompt the assistant later and surface the result in the UI.
  • Loads the configured UEX user profile from GET /user so the assistant knows the current account username, display name, timezone, language, and marketplace-relevant profile details.
  • Polls authenticated GET /user_notifications for unread UEX notifications and surfaces new pending alerts in the chat notification queue.

Setup

  1. Install Python 3.11+.

  2. Install Ollama and pull a tool-capable model, for example:

    ollama pull qwen3.5:9b
    
  3. Create .env from .env.example and set UEX_SECRET_KEY and/or UEX_BEARER_TOKEN if you want authenticated actions.

  4. Install and run:

    pip install -e .
    uvicorn traderai.server:app --reload
    
  5. Open http://127.0.0.1:8000.

Notes

Ollama runs locally at http://localhost:11434 by default. This app talks to Ollama's native chat API with tool schemas, then executes approved UEX calls in the FastAPI backend. OLLAMA_NUM_CTX controls the per-request Ollama context window; 64000 is the default because Ollama recommends at least 64k tokens for agent-style workflows when hardware allows it.

UEX marketplace posting and negotiation messages are guarded because they are account-affecting write actions. The model can draft them, but the UI approval button performs the final API call.

The assistant gets runtime context on every chat: current date/time, authenticated UEX identity when credentials are configured, remembered user profile, last interaction time, relevant memories, and recent conversation excerpts. It is instructed to prefer open/current marketplace data, avoid historical sale information unless explicitly requested, and treat UEX prices as in-game aUEC/UEC credits rather than real-world dollars. Memory is stored locally at TRADERAI_MEMORY_PATH.

Wake jobs can be created from chat, for example:

At 9 PM remind yourself to check my open Polaris Bit negotiations.

or:

Every day at 9 AM, wake up and check whether I have marketplace followups.

The scheduler accepts one-time ISO datetimes and five-field cron expressions through the schedule_wake_job tool. When a wake job fires, the assistant receives context like the current time and last interaction time, then places its response into the UI notification queue.

UEX notifications are checked every UEX_NOTIFICATION_POLL_SECONDS seconds by default. New unread notifications are deduplicated locally, then displayed in the chat through the same notification queue used by wake jobs.

Sources Used

S
Description
A AI for UEX
Readme 2.1 MiB
Languages
JavaScript 69.7%
Python 26.6%
CSS 2.2%
HTML 1.4%