Author: virattt
Stars: 1,115 stars today
Description: An autonomous agent for deep financial research
Dexter is an autonomous financial research agent that thinks, plans, and learns as it works. It performs analysis using task planning, self-reflection, and real-time market data. Think Claude Code, but built specifically for financial research.
Dexter takes complex financial questions and turns them into clear, step-by-step research plans. It runs those tasks using live market data, checks its own work, and refines the results until it has a confident, data-backed answer.
Key Capabilities: - Intelligent Task Planning: Automatically decomposes complex queries into structured research steps - Autonomous Execution: Selects and executes the right tools to gather financial data - Self-Validation: Checks its own work and iterates until tasks are complete - Real-Time Financial Data: Access to income statements, balance sheets, and cash flow statements - Safety Features: Built-in loop detection and step limits to prevent runaway execution
If you don't have Bun installed, you can install it using curl:
macOS/Linux:
bash
curl -fsSL https://bun.com/install | bash
Windows:
bash
powershell -c "irm bun.sh/install.ps1|iex"
After installation, restart your terminal and verify Bun is installed:
bash
bun --version
Clone the repository:
bash
git clone https://github.com/virattt/dexter.git
cd dexter
Install dependencies with Bun:
bash
bun install
Set up your environment variables: ```bash
cp env.example .env
```
Run Dexter in interactive mode:
bash
bun start
Or with watch mode for development:
bash
bun dev
Dexter includes an evaluation suite that tests the agent against a dataset of financial questions. Evals use LangSmith for tracking and an LLM-as-judge approach for scoring correctness.
Run on all questions:
bash
bun run src/evals/run.ts
Run on a random sample of data:
bash
bun run src/evals/run.ts --sample 10
The eval runner displays a real-time UI showing progress, current question, and running accuracy statistics. Results are logged to LangSmith for analysis.
Dexter logs all tool calls to a scratchpad file for debugging and history tracking. Each query creates a new JSONL file in .dexter/scratchpad/.
Scratchpad location:
.dexter/scratchpad/
├── 2026-01-30-111400_9a8f10723f79.jsonl
├── 2026-01-30-143022_a1b2c3d4e5f6.jsonl
└── ...
Each file contains newline-delimited JSON entries tracking: - init: The original query - tool_result: Each tool call with arguments, raw result, and LLM summary - thinking: Agent reasoning steps
Example scratchpad entry:
json
{"type":"tool_result","timestamp":"2026-01-30T11:14:05.123Z","toolName":"get_income_statements","args":{"ticker":"AAPL","period":"annual","limit":5},"result":{...},"llmSummary":"Retrieved 5 years of Apple annual income statements showing revenue growth from $274B to $394B"}
This makes it easy to inspect exactly what data the agent gathered and how it interpreted results.
Important: Please keep your pull requests small and focused. This will make it easier to review and merge.
This project is licensed under the MIT License.
Unable to fetch file structure.