Build log

Built in public, one night at a time.

A running record of how Nocturne comes together for the Bitget AI Base Camp hackathon. Newest first.

Day 10Sep 19, 2026

Made always-on actually mean it

  • Caught the external minute-scheduler failing quietly: it was timing out on its own side while each tick finished on the server, so it throttled itself and left a multi-hour gap in the record overnight.
  • Moved scheduling into the repo as a GitHub Actions workflow that pings the tick endpoint on a fixed cadence from GitHub's own infrastructure, so the agent keeps trading with every local machine and browser closed, and any failed tick shows up red instead of silently vanishing.
  • Bounded the model call so a slow gateway can never hang a tick: a 45-second timeout with no retries, after which the agent falls back to its transparent rule-based decision, plus a hard time limit on the endpoint itself.
  • Confirmed it end to end and let it run: scheduled ticks return a clean 200 with the portfolio advancing and trades executing on GitHub's clock, untouched, through today.
Day 9Sep 18, 2026

Hardened the pipeline, polished the demo

  • Made the decision pipeline tolerant by design: every model response is validated against a strict schema, clamped to sane ranges, and stripped of unknown tickers and low-confidence noise. If a reply still will not parse, the transparent rule-based decision takes over, so a malformed answer can never reach the ledger.
  • Did an accessibility and mobile pass: the terminal now reads cleanly on a phone, holds its contrast, and honors reduced-motion for anyone who asks for less animation.
  • Filled out the How it works page with the exact JSON schema a decision must satisfy and the guardrails around it, so the reasoning is legible to a judge instead of a black box.
  • Tuned the first load: faster paint, sensible empty and error states, and the value line tightened to one sentence, so the demo lands in the first few seconds.
Day 8Sep 17, 2026

Strategy presets, hard limits

  • Shipped three strategy presets, conservative, balanced and aggressive, where one switch changes both the risk limits and the tone of the prompt the model reasons with.
  • Enforced those limits in code before anything reaches the ledger: a cap on exposure per name, a cap on size per trade, and a minimum-confidence gate that drops timid calls instead of trading them.
  • Kept one rule absolute across every preset: cash can never go negative, so the agent can never commit money it does not hold.
  • Added start, pause, reset and configure controls to the terminal, so the running agent can be steered live without a redeploy.
Day 7Sep 16, 2026

A public, verifiable track record

  • Published a read-only paper-trading log at /log: every executed trade with its UTC timestamp, instrument, direction, price, size, notional, cash impact, running balance, and realized P&L, open to anyone with no login.
  • Added one-click CSV export of the full history, so the record can be audited or analyzed outside the app.
  • Linked it from the footer, so the run record is one click from anywhere on the site.
Day 6Sep 15, 2026

Proof it is real, on-chain

  • Added a read-only on-chain proof panel to the terminal: every watchlist token shows its real xStock mint address with a direct link to its Solscan token page.
  • Pulled recent transaction signatures for each mint straight from a Solana RPC node, each one linking to the transaction on Solscan, so anyone can confirm the token is genuinely trading on-chain.
  • Kept the safety line bright: Nocturne only reads the chain. It never signs, sends, or settles a transaction, and the portfolio stays paper-traded.
  • Held to the provider pattern, so a slow or rate-limited RPC falls back to a clearly labelled demo set and the panel never breaks the terminal.
Day 5Sep 14, 2026

Open-sourced and hardened for launch

  • Opened the source to the public with a professional README, an MIT license, and a one-file deploy guide, so anyone can stand up their own Nocturne in minutes.
  • Added a global tick throttle so the shared agent stays stable and its token use stays bounded when many people open the dashboard at once.
  • Pointed the language model at the hackathon's Qwen gateway and kept the transparent demo fallback, so a failed call never breaks the feed.
  • Wired every in-app source link, the nav, header, footer and the hero's View source button, to the public repo through one shared config value.
Day 4Sep 13, 2026

Live signals, real decisions, always on

  • Turned on live tokenized-equity prices from on-chain xStock markets, with the recorded demo series as an instant fallback so the terminal never goes blank.
  • Wired real Qwen decisions into the loop: each tick returns a market view and a per-ticker rationale as structured JSON, validated before it can touch the ledger.
  • Fed news headlines and a derived sentiment score into the prompt, so the reasoning reflects the tape and the mood, not just the price.
  • Made it genuinely 24/7: state now persists in Redis and an external cron advances the agent every minute, so the portfolio keeps moving with no browser open.
  • Shipped the first public deploy on Vercel.
Day 3Sep 12, 2026

A cockpit and a brand

  • Overlaid the agent's own buy and sell trades as arrows on the candle chart, and gave the decision feed a spotlight: the newest call types itself out and pulses.
  • Merged the numbers into one cockpit panel with a realized win rate, a capital-deployed gauge, and a live world clock across New York, London, Tokyo and Hong Kong.
  • Added a 'while you were away' recap that greets you on return with what the agent did since you last looked, which is the whole point of an agent that never sleeps.
  • Designed an original brand: a crescent-moon-into-rising-line mark, a matching favicon and social card, and a wordmark whose O is a glowing crescent.
Day 2Sep 11, 2026

Candlesticks, motion and a real site

  • Added a green and red candlestick market chart with a ticker selector, driven by a shared price engine so the live quote and the newest candle always agree.
  • Layered in motion: a drifting aurora background, scroll reveals, and a nav with a sliding active indicator, all of it honoring reduced-motion.
  • Split the single page into four routes: Home, Terminal, How it works, and this Build log.
Day 1Sep 10, 2026

The scaffold and the night shell

  • Stood up the Next.js app with the dark Nocturne design system: glass panels, a WebGL globe, and tabular numerals throughout.
  • Built the autonomous agent loop end to end on demo data: gather signals, decide, apply to a paper ledger, log.
  • Wrapped every external dependency behind a provider with a demo fallback, so the whole thing runs with zero API keys.
  • Hardened the dependency tree to zero known vulnerabilities.
Next up
  • Backtest and replay mode, to see how a strategy would have played a past session.
  • A side-by-side comparison of the conservative, balanced and aggressive presets.