OpenChart
Free Desktop charting with Claude or Codex. Describe alerts, research chart moves, and choose your data providers.
Reflex reviews how you decided, not just what you earned. Decision review, Decision DNA, Pre-Trade Recall and a Playbook you control, for crypto and tokenized US equities.
FinanceTypeScript · PLpgSQLGitHub @DevenduranceOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Your trading decisions have a memory.
Built for messy, information-overloaded retail traders.
Reflex is a personal trading intelligence system that helps messy, information-overloaded retail traders understand how they actually make decisions, learn from both wins and losses without hindsight fooling them, and carry those lessons into the next trade before the same mistake happens again.
Capture the decision. Examine the evidence. Learn from the process. Recall the lesson.Read the full README ↗Built for messy, information-overloaded retail traders.
Reflex is a personal trading intelligence system that helps messy, information-overloaded retail traders understand how they actually make decisions, learn from both wins and losses without hindsight fooling them, and carry those lessons into the next trade before the same mistake happens again.
Capture the decision. Examine the evidence. Learn from the process. Recall the lesson.
Open Reflex · How it works · Demo walkthrough · Run locally · Architecture
P&L is a bad teacher. A profitable trade can come from a poorly supported decision, and a losing trade can still have followed a sound process. Most trading journals record entries, exits and outcomes, but lose the original thinking that led to the trade.
Who it's for: Self-directed retail traders whose decisions are shaped by a messy mix of charts, group chats, social posts, market narratives and their own research. When that information is fragmented, the reasons behind a trade are easily rewritten by hindsight. Reflex is designed to help these traders understand how they actually decide—not simply whether a trade won or lost.
Reflex preserves the decision as it was understood at the time, links it to genuine trade evidence, reviews the process, and recalls relevant lessons before a future decision. It deliberately separates decision quality from financial outcome and does not claim that using Reflex improves returns.
The loop: Decide → Trade → Understand → Learn → Evolve → Recall → Decide better.
Built for Bitget AI Base Camp Season 2, Track 3: AI Trading Desk — Review & Self-Evolution. Reflex demonstrates a decision-review and learning workflow with genuine, owner-controlled evidence. The MVP does not place trades or claim predictive financial performance.
| Stage | Product area | What it does |
|---|---|---|
| Decide | Decision Desk | Write your rationale in natural language, inspect structured suggestions, correct them and confirm your original decision. |
| Trade | Trade Activity & Evidence | Record genuine execution facts manually, import Bitget Classic Spot CSV history, or use a restricted preview/select workflow for Bitget Futures positions (live UTA retrieval not yet verified). Preserve missing values as unknown. |
| Understand | Autopsy | Review process across research, context, risk, execution and behavioral discipline with evidence-backed findings and explicit coverage. |
| Learn | Decision DNA | Turn accepted reviews into observations. Stronger recurring findings require independent qualifying history. |
| Evolve | Playbook | Propose grounded process rules as Experimental. Rules require a user's explicit decision before activation. |
| Recall | Pre-Trade Recall | Retrieve semantically relevant owned history and ask evidence-backed questions before a prospective trade. No order is placed. |
Asset placeholders: These are suggested file paths, not images currently included in the repository. Replace with approved captures before submission; avoid accidentally publishing personal account or financial information.
| Material | Placeholder path | Suggested content |
|---|---|---|
| Hero / cover | docs/media/reflex-hero.png | Full-width landing or product preview |
| Decision Desk | docs/media/decision-desk.png | Draft, structured extraction and confirmation |
| Autopsy | docs/media/autopsy.png | Grounded scoring and evidence coverage |
| Decision DNA | docs/media/decision-dna.png | Observation maturity and supporting review |
| Playbook | docs/media/playbook.png | Experimental proposals pending user action |
| Pre-Trade Recall | docs/media/pre-trade-recall.png | Relevant history, watchpoints and questions |
| Demo video | docs/media/demo-link.txt | Add the public YouTube video URL when available |
| Bitget Futures preview | docs/media/bitget-futures-preview.png | Optional approved screenshot of owner-only history preview; do not imply successful live UTA retrieval |
| Architecture diagram | docs/media/architecture.png | Optional exported version of the diagram below |
A meaningful walkthrough follows the same history through the product:
Live demo: tryreflex.vercel.app
Recorded demo (YouTube): Placeholder: insert the public video URL here after it is uploaded and verified accessible.
The walkthrough uses a real retrospective RUNNER decision to illustrate the loop. The example Autopsy's Decision Quality score is provisional, the financial outcome is unknown, the three DNA findings are single-decision observations, and the two Playbook proposals are pending. They are product outputs from one account, not evidence of improved trading performance. The separate optional Bitget Futures preview is excluded from the recorded success path because live UTA retrieval has not yet succeeded.
Reflex supports manual trade evidence and distinct Bitget integrations. Their availability and validation status matter:
| Integration | Implementation | User-facing and verification status |
|---|---|---|
| Manual trade evidence | Attach genuinely known execution and cash-flow observations, including incomplete or retrospective accounts | Implemented and exercised in the decision workflow |
| Bitget Classic Spot CSV | Preview order/fill history, classify trade purpose, confirm imports, and retain import receipts | Implemented and live-exercised in Trade Activity; importing does not imply every order represents a speculative decision |
| Bitget authenticated Futures SDK | An owner-restricted frontend inside a confirmed decision: select USDT/USDC Futures, enter a trading pair and bounded dates, preview closed positions, and explicitly select and confirm evidence imports. Uses a read-only getPositionsHistory operation and protects private credentials server-side | UI and handlers implemented; live UTA retrieval not validated. A read-only BTCUSDT preview reached Bitget but returned provider error 400. No position was imported in that test |
| Self-service Connect Bitget | Account linking and independent API credentials / synchronization for each user | Not implemented; do not describe the owner-only import interface as multi-user account connection |
How the Futures flow works: The eligible, explicitly bound account owner opens Trade Evidence on a confirmed decision and previews a bounded page of positions. Previewing stores nothing. Importing requires deliberate position selection, confirmation, and server-side decision/symbol checks, including an audited explanation where the exchange symbol differs from the decision. Up to ten eligible positions may be selected for a single import request, and duplicate records are handled idempotently. Unsupported or incomplete data must never be converted into invented trade evidence.
UTA compatibility limitation: The SDK maps to Bitget's UTA position-history endpoint, but an authorized real-account preview returned a provider-side 400; its underlying cause was not established. This is not evidence of successful account syncing or a successful live Futures import. Private Bitget API keys are not needed for the public market-context service.
The private SDK path is restricted to an explicitly configured authenticated subject. It is not multi-user Bitget account syncing. Never put private exchange credentials in the client or treat an optional server-side binding as a user-facing connection feature. Exchange data also cannot, by itself, establish a trader's original motive.
The backend exposes a bounded market-context service (POST /api/market/context) with allowlisted public MCP providers:
These are public market-context inputs, separate from authenticated Bitget account data. They do not require BITGET_API_KEY, BITGET_SECRET_KEY or BITGET_PASSPHRASE. Provider results are normalized and carry provenance; unavailable data remains unavailable.
The market-context API should not be mistaken for a full autonomous research agent or a guarantee that every Autopsy automatically receives live prices. Crypto sentiment is not a token-level live quote feed.
flowchart TD
UI["Next.js / React user interface"] --> API["Validated server route handlers"]
API --> AUTH["Neon Auth: sessions and identity"]
API --> DB[("Neon Postgres + pgvector")]
API --> GROQ["Groq: bounded structured generation"]
API --> JINA["Jina: memory embeddings"]
API --> MARKET["Public market MCP adapters"]
API --> BITGET["Optional owner-bound Bitget read-only SDK"]
DB --> HISTORY["Decisions · Trade evidence · Reviews · DNA · Rules"]
HISTORY --> API
| Layer | Technology |
|---|---|
| Frontend | Next.js 16 App Router, React 19, TypeScript, Tailwind CSS 4 |
| Identity | Neon Auth using server-managed sessions |
| Database | Neon PostgreSQL, Drizzle ORM, pgvector for retrieval |
| Structured AI | Groq, using validated JSON and evidence reference checks |
| Retrieval | Jina passage/query embeddings, owner-scoped semantic retrieval |
| Exchange evidence | Bitget Classic Spot CSV parser; optional Bitget Agent SDK read-only Futures integration |
| Market context | Public Bitget Agent MCP and Bitget Signal MCP adapters |
| Hosting | Vercel |
| Route | Purpose |
|---|---|
/ | Landing page |
/sign-in, /sign-up | Authentication |
/app | Authenticated overview |
/app/decisions | Decision Desk |
/app/activity | Exchange activity and Classic CSV imports |
/app/autopsies | Autopsy history |
/app/dna | Decision DNA |
/app/playbook | Proposals and user-controlled rules |
/app/recall | Pre-Trade Recall |
git clone https://github.com/Devendurance/tryreflex.git
cd tryreflex
npm ci
cp .env.example .env.local
npm run dev
On Windows PowerShell, copy the example environment file using Copy-Item .env.example .env.local.
Visit http://localhost:3000. To use an alternative port, run npm run dev -- -p 3002.
Provide secret values locally in .env.local or through your hosting provider's secure environment settings. Never commit credentials.
| Variable | Required? | Purpose |
|---|---|---|
DATABASE_URL | Yes | Pooled Neon Postgres connection |
DATABASE_URL_UNPOOLED | Yes for migration tooling | Direct connection to the same intended database |
NEON_AUTH_BASE_URL | Yes | Existing Neon Auth service URL |
NEON_AUTH_COOKIE_SECRET | Yes | Server-side cookie signing, 32+ characters |
GROQ_API_KEY | Yes for AI features | Structured generation |
GROQ_MODEL | Yes for AI features | Configured Groq model |
JINA_API_KEY | Yes for semantic memory | Embedding provider |
JINA_EMBEDDING_MODEL | Yes for semantic memory | Locked embedding model |
JINA_EMBEDDING_DIMENSIONS | Yes for semantic memory | Matching stored vector dimensionality |
BITGET_API_KEY, BITGET_SECRET_KEY, BITGET_PASSPHRASE | Optional | Private Bitget SDK, not public market MCP |
BITGET_ACCOUNT_AUTH_SUBJECT | Optional; mandatory for private SDK import | Restrict private credentials to one trusted authenticated subject |
AGENTKEY_API_KEY | Optional | Integration/diagnostic features |
MCP_TIMEOUT_MS | Optional | Public MCP request timeout |
Only configure private exchange credentials when that owner-bound integration is intentionally enabled. Production and preview credential scopes should be reviewed separately.
Existing, populated databases must not be reset, reseeded or blindly remigrated. Review the versioned SQL files in drizzle/ and the current migration journal before changing a live database.
For a fresh database you own, after reviewing the migration plan:
npm run db:migrate
The project contains four versioned migrations. npm run db:generate creates a new migration from schema changes; it is not a required step on every startup. npm run db:verify is an integration check requiring live database connectivity.
npm run test:all
npm run type-check
npm run lint
npm run build
Focused test suites include market adapters, persistence, AI, decisions, Autopsy, DNA, Recall, Playbook and Classic CSV. At the October 2026 release QA checkpoint, 476 automated tests passed locally, with two pre-existing nonblocking lint warnings. This is a historical test result, not a claim that a GitHub Actions workflow is continuously passing.
The subsequent Futures frontend and diagnostic work added focused regression coverage: the Autopsy-focused suite reached 158 passing tests locally, with typecheck and production build passing. This does not establish live Bitget UTA compatibility or replace the earlier full-suite release QA result.
Additional real-provider verification scripts exist, but may require real credentials and authenticated fixtures. Review their requirements before running them; they are not prerequisites to reading the README or browsing the public application.
Do not upload private trades or use another person's exchange credentials without their permission. If preparing a public demo, redact personal information or obtain consent for the exact material shown.
400; successful live Futures retrieval or import is not yet verified. It is not a multi-tenant connection feature.Bug reports, documentation corrections and focused improvement suggestions are welcome through GitHub Issues. Please do not paste secrets, session cookies, private account identifiers or raw financial exports into public issues.
For changes, create a focused branch, run the relevant tests and describe the user-visible effect and verification in your pull request.
Released under the MIT License. Copyright (c) 2026 Devendurance. Third-party libraries, external data providers, trademarks and service terms retain their own licenses and restrictions.
Reflex — decisions worth learning from.