Releases: Replicant-Partners/fermi
Release list
Fermi Console v0.8.4
What's new
-
Dashboard action bar. Three prominent hero buttons — + New forecast, 🔮 From Polymarket, 📎 Paste PM URL — sit above the stats cards so testers can start work without knowing the shortcuts. The Polymarket buttons open the search card in-place on the Dashboard instead of punting you over to Portfolio.
-
Keyboard shortcuts help modal. Press Ctrl+/ any time to open a categorized list of every hotkey (Forecast workflow, Navigation, Window, Help). Three redundant entry points so it's impossible to miss: the shortcut itself, a sidebar chip (⌨ Shortcuts · Ctrl+/) next to the version/wallet chips, and Help → Keyboard Shortcuts. Escape or backdrop-click dismisses.
-
Drafts and resolved forecasts are visible on the Dashboard. Two new sections — Drafts (unpublished WIP, click to open in Composer) and Recently Resolved (last 10, Brier-sorted) — appear below Live. Previously, forecasts not in any named portfolio were orphaned in the UI: they weren't in the Portfolio panel (that's for named portfolios only) and the Dashboard only surfaced actives. Now the Dashboard is a full home for every forecast the operator owns.
-
Recent Activity is actually useful now. Two changes: same-family resolutions collapse into a single summary row (a wall of "Resolved No: Will X win the 2026 FIFA World Cup" now reads "Resolved 8× 2026 fifa world cup — all No"), freeing seven slots for higher-signal content. And trivial-Brier resolutions (< 0.05) are demoted below drafts / probability revisions / notable calls, only showing when the feed would otherwise be empty. Perfect-Brier long-shot calls are no longer noise.
-
Pre-publish portfolio picker. The composer's portfolio chip strip is now interactive while the forecast is still a draft. Clicking a chip queues a pending selection (dashed gold border) which gets applied automatically at publish. Header text changes to "ADD TO PORTFOLIOS ON PUBLISH:" and the hint reads "selections apply on publish (Ctrl+P)". No more publish-then-remember-to-add friction.
-
Sidebar version chip is clickable. Three states: ⬆ Update to vX (cyan, opens release notes), vX — checking… (dim, disabled), vX — up to date (green, re-runs the check with a verbose toast).
-
Drafts and probability revisions in Recent Activity. New icons distinguish Draft (✎, gold), Published (◐, cyan), and Revised (→, cyan) from Resolved (✓, Brier-colored). Relative timestamps (
3m ago) replace bare ISO dates.
Fixes
- Sidebar chip flexibility. The version chip is now always clickable and communicates whether the update check has run yet, so the operator never has to guess whether they're on the latest build.
Known issues
- The Composer's older Polymarket type-ahead strip still sits under the question field. It works, but the Dashboard's new in-place PM search card is the recommended flow — a follow-up will unify the two so both entry points render the same card.
Breaking changes
None.
Upgrade notes
Just Update & Restart. No data migration needed.
Install / Update
Existing users: Help → Check for Updates… inside the app.
New users:
curl -fsSL https://raw.githubusercontent.com/Replicant-Partners/fermi/main/scripts/install-fermi-console.sh | bashFermi Console v0.8.3
What's new
-
Inline portfolio membership in the Composer. A new "IN PORTFOLIOS:" chip strip appears right under the question field, listing every portfolio you own. Click a chip to add or remove the current forecast — no more Portfolio-panel round-trip. Shows a "publish (Ctrl+P) to enable" hint while the forecast is still a draft.
-
Recent Activity is now clickable. The Dashboard's recent-activity feed rows carry the forecast id and route to
open_forecaston click. Hover state indicates the row is actionable. -
Publish → Dashboard updates immediately. Publishing a forecast now signals the parent to refetch the active/resolved/draft lists on the next tick, instead of waiting up to 30 seconds for the background refresh loop. The forecast appears in the Dashboard's Live section (and Recent Activity) within a second of publish.
-
Schedules tab shows on-demand assignments. Previously the tab was empty unless the FPL declared a recurring
Schedule::Everyblock, which meant agents hired via the marketplace or the driver editor's +Assign flow never surfaced. Now the empty state enumerates every AST agent assigned to a driver and offers ▶ Run now / 📅 Daily / 📅 Weekly buttons per row — one click promotes an on-demand assignment to a persisted recurring schedule.
Fixes
- Driver editor labels no longer wrap character-by-character. The
Name,Rationale,p5 (low),p50 (mid),p95 (high), andUnitlabels in the driver editor were breaking into vertical single-character stacks when the right panel was narrow. The label element now setsflex_none + overflow_hidden + whitespace_nowrap— labels truncate gracefully at the column edge instead of shredding. The field inputs themselves are unaffected.
Known issues
- The +Assign Agent flow still creates
Schedule::Oncebindings by default. The new Schedules tab UX (upgrade to Daily/Weekly per row) is the primary way to make an assignment recurring; a follow-up will surface Daily/Weekly directly in the +Assign chooser so the operator can pick a cadence at hire time. - The composer's portfolio chip strip lists every portfolio you own, without paging. If you have >20 portfolios the strip will wrap onto multiple lines; a search/filter row is queued for a follow-up.
Breaking changes
None.
Upgrade notes
Just Update & Restart. No data migration needed.
Install / Update
Existing users: Help → Check for Updates… inside the app.
New users:
curl -fsSL https://raw.githubusercontent.com/Replicant-Partners/fermi/main/scripts/install-fermi-console.sh | bashFermi Console v0.8.2
What's new
-
Polymarket type-ahead in the Composer. As you type your forecast question, Fermi live-searches Polymarket in the background (500ms debounced). Up to five matching markets appear as click-to-import chips directly under the question field — each chip shows the market's title and current crowd price. Click one and the forecast is initialized with the PM link pre-populated: question text, crowd price seeded as the inside view, 5-minute background poll enabled, ready for Ctrl+Enter to decompose. Zero panel-hopping, zero search modal.
-
Paste-a-URL shortcut. Paste a
polymarket.com/event/...link into the question field and the search skips straight to that market — one click to import. -
Dismissible. Click the ✕ on the type-ahead strip to hide it for the session. Clearing the question field brings it back automatically. Once a forecast is linked to a market, the strip stays out of the way — no re-suggesting.
-
Sign-in via browser is fully automatic again. Fixed a server-side OAuth state serialization bug that was corrupting the desktop redirect target (colons in
http://127.0.0.1:PORT/callbackwere being truncated). The console's browser sign-in now completes without asking you to paste a token.
Fixes
- OAuth state serialization: server now URL-encodes the redirect target before folding it into the OAuth
stateparameter, and URL-decodes on callback. Fixes the "browser opens, signs in on ABW, but console keeps waiting" regression.
Known issues
-
Type-ahead needs at least 3 characters to search, and the Polymarket search endpoint's fuzzy matcher won't return anything for very generic queries ("will it happen"). Refine the phrasing (add subject/date) and the matches show up.
-
The Portfolio panel's "🔮 Import from Polymarket" button is still there — it's the browse-catalog flow for when you want to shop markets without a specific question in mind. The new composer type-ahead is the primary path for "I know what I want to forecast, is there a market for it?".
Breaking changes
None.
Upgrade notes
Just Update & Restart. The OAuth fix is server-side and applies to all clients as soon as the API server on agent-bestiary.world picks up this commit.
Install / Update
Existing users: Help → Check for Updates… inside the app.
New users:
curl -fsSL https://raw.githubusercontent.com/Replicant-Partners/fermi/main/scripts/install-fermi-console.sh | bashFermi Console v0.8.1
What's new
-
Marketplace cards now expand to a full agent profile. Click the ▸ chevron on any Agent Fleet marketplace card to see the agent's IO contract (accepts → produces), model + temperature, version, author, sample queries, declared MCP tools, and skills. A "Open in ABW ↗" link takes you to the full agent page in the browser. Agents that need secrets get a ⚠ warning surfaced.
-
Three-tier Hire flow. The Hire button on marketplace cards now opens a proper modal: pick the forecast → pick the driver (or hire ambient with no driver) → review terms + notes → Confirm. The stepper shows where you are; each step's selection auto-advances where sensible. Confirm currently drops a hint into the Composer and navigates you there for the final +Assign Agent step — full auto-assign wiring lands next.
-
"Cost low→high" / "Cost high→low" sort chips replace the ambiguous "Cheapest" label. Both keep agents with no cost data at the bottom rather than jumping the queue at either end.
Fixes
-
Score column no longer shows "0" for unrated agents. Marketplace cards without any usage data now show an "unrated" pill instead of implying the agent scored zero. Same for cost and success cells — they're hidden entirely when there's no data behind them.
-
"No usage data yet — listed alphabetically" hint now appears above the marketplace when nothing in the visible set has been run. Makes it obvious why sort chips aren't changing the order.
-
"No agents match the current filter" empty state replaces silent blank space when the tier filter excludes everything.
Known issues
-
The Hire modal's Confirm step is scaffolding — it surfaces a hint and routes you to the Composer, but doesn't yet create the agent-to-driver binding on the server. Follow-up wiring touches the cockpit's
assign_agent_to_driverand needs a server-side per-forecast agent binding endpoint. -
The driver picker in step 2 of the Hire modal only enumerates drivers when the picked forecast is the one currently open in the Composer. If you hire an agent for a different forecast, you can still proceed via ambient; the "switch cockpit to picked forecast, then show its drivers" flow is a follow-up.
-
Terms section is a placeholder — will surface
fork_pricing/royalty/auto_collect_pctper agent once ABW ships those fields at the API layer.
Breaking changes
None.
Upgrade notes
Just Update & Restart. No data migration needed.
Install / Update
Existing users: Help → Check for Updates… inside the app.
New users:
curl -fsSL https://raw.githubusercontent.com/Replicant-Partners/fermi/main/scripts/install-fermi-console.sh | bashFermi Console v0.8.0
What's new
-
Invite anyone with a link. Team, portfolio, and forecast invite dialogs now pop a modal with the shareable URL the moment you send the invite. Copy it to Slack, WhatsApp, or paste it into email yourself — no waiting on server-side email delivery. New testers landing on the invite page see Google/GitHub sign-in buttons up front and return to the invite one click later.
-
Dashboard PM sync chip. The
⚡ Sync N PM marketschip on the Dashboard header shows how many active forecasts are linked to Polymarket and triggers a resolution check without leaving the panel. -
Portfolio Risk view. Every portfolio detail now includes six inline risk metrics: concentration (HHI), independent P(any yes), correlated P(any yes) with a ρ slider (−0.5 / 0 / 0.3 / 0.6 / 0.9), expected book Brier (1000-sample Monte Carlo), drawdown-if-your-biggest-edge-is-wrong, and a top-4 joint outcome tree. All computed client-side from the forecasts you already have loaded — no extra round-trips.
-
Cascades UX. The
⛓ RELATIONSHIPSsub-panel lists every declared cascade rule that touches this portfolio (mutex, implies, at-most-n, conjunction, conditional, exhaustive cover). "+ Declare" opens an inline sheet: pick a kind, tick the forecasts, setnif applicable, add a description, submit. Rules render with kind badge, a preview of the forecasts they touch, and Remove. -
Agent Fleet as ranked marketplace. The Agent Fleet tab now leads with a marketplace: agents ranked by a transparent score combining success rate, cost per run, popularity, and this-session contribution. Filter by tier (Popular / Established / Rising / Fresh) or sort by cheapest / most reliable / most used / best contribution. Each card shows the score, cost per run color-graded from green ($≤0.05) to orange, success rate, tag pills, and an Assign button.
-
Portfolio Constellation drill-down. Portfolio rows are compact by default; click the ▸ chevron to expand a per-row drill-down with the full question, tags, Brier if resolved, and explicit Open / Remove actions. Six quick-filter chips (active / hot / linked / edge / shared / resolved) with AND semantics compose with the free-text filter.
-
Trajectory chart polish. Right-margin legend column (you / crowd / base) with de-collision, faint horizontal gridlines, and colorblind-safe shape channel on event markers (circle = rate revision, diamond = BayesOps refit, ring = market observation, tick = agent run). The event log below is now grouped into HistoryFlow phases, each headed by its rate revision with an auto-generated summary of the activity that led there.
Fixes
-
Base rate no longer silently reverts. Fixed the "click Update base rate, see the new %, leave the panel, come back, see the old %" bug. Every code path that mutates the base rate (question decomposition, ⟳ Update, Polymarket anchor) now PATCHes
metadata.base_rateto the server, and hydration on open unconditionally prefers metadata over the FPL template's initial anchor. Forecasts whose base rate was set before this version get an opportunistic backfill on next open — no manual action required. -
Invite copy-link chip in forecast/team invite lists no longer hardcodes the production URL — reads the live API base URL instead, so localhost and staging deployments produce links that actually resolve.
-
Trajectory event log inline labels don't collide with the worm anymore when crowd/base/model values cluster together — the right-margin legend column takes over.
-
Removed the orphan
cockpit_old.rsmodule and cleaned up stale eval-brier / execution.rs compile errors that surfaced under stricter linting.
Known issues
- The "Assign to a driver…" button on marketplace cards navigates to the Composer with a hint toast but doesn't fully automate the driver-assignment picker yet — you still need to click a driver's "+ Assign Agent" affordance. The full one-click hire flow lands in a follow-up.
- The forecast-outcome-contribution signal in the marketplace currently derives from session confidence only. A server-side per-agent Brier-delta contribution feed is planned but not shipped in this release.
- Portfolio row mini-worms show model-vs-crowd but not a time-series sparkline yet — the sparkline pass is queued behind a
/api/portfolios/:id/timelineendpoint. - P(any yes) at ρ is a linear-blend approximation between the independent value (ρ=0), max single event (ρ=+1), and Σp bound (ρ=−1). Correct at the limits, honest but rough in the middle — treat it as directional, not a precise joint probability.
Breaking changes
None. Existing forecasts, invites, and portfolios keep working. Client is backward-compatible with previous server versions except for the two new client-side features that require a matching server (metadata on the update endpoint for base-rate persistence; email_sent + invite_url on invite creation for the just-created modal). Both features degrade gracefully — the client falls back to constructing invite URLs locally and treats metadata as optional.
Upgrade notes
Just Update & Restart. On first open of a pre-existing forecast whose base rate was set locally in a previous session, expect a log line like [base-rate-backfill] AST carries base_rate but server metadata is empty — persisting — that's the migration self-healing, one-time per forecast.
Install / Update
Existing users: Help → Check for Updates… inside the app.
New users:
curl -fsSL https://raw.githubusercontent.com/Replicant-Partners/fermi/main/scripts/install-fermi-console.sh | bashFermi Console v0.7.0
Fermi Console v0.7.0
Quick Install (Linux x86_64)
curl -fsSL https://raw.githubusercontent.com/Replicant-Partners/fermi/main/scripts/install-fermi-console.sh | bashOr download directly:
# Install runtime deps (one-time)
sudo apt-get install -y libxcb1 libxkbcommon0 libxkbcommon-x11-0 \
libfontconfig1 libfreetype6 libwayland-client0 libvulkan1 mesa-vulkan-drivers
# Download and run
curl -L https://github.com/Replicant-Partners/fermi/releases/latest/download/fermi-console-linux-x86_64 \
-o fermi-console && chmod +x fermi-console && ./fermi-consoleBuilding from source
See README.
abw CLI abw-v0.2.0
abw CLI — abw-v0.2.0
The abw command-line is the developer-facing path for building
Apps on the Agent Bestiary Workspace platform. See Doc 3 — Building
New Apps on ABW
for the three drop-dead-easy paths.
Quick install (any platform)
curl -fsSL https://raw.githubusercontent.com/Replicant-Partners/fermi/main/scripts/install-abw.sh | bashManual install
Pick the archive for your platform from the assets below:
abw-abw-v0.2.0-x86_64-unknown-linux-gnu.tar.gzabw-abw-v0.2.0-aarch64-unknown-linux-gnu.tar.gzabw-abw-v0.2.0-x86_64-apple-darwin.tar.gz(Intel Mac)abw-abw-v0.2.0-aarch64-apple-darwin.tar.gz(Apple Silicon)abw-abw-v0.2.0-x86_64-pc-windows-msvc.zip
Extract, drop abw (or abw.exe) on your $PATH, then:
abw login
abw app new my_first_app
abw app deployVerify
Each platform has a checksums-<target>.txt listing SHA256s of both
the archive and the plain binary.
Fermi Console v0.1.0
Fermi Console v0.1.0
Quick Install (Linux x86_64)
curl -fsSL https://raw.githubusercontent.com/Replicant-Partners/fermi/main/scripts/install-fermi-console.sh | bashOr download directly:
# Install runtime deps (one-time)
sudo apt-get install -y libxcb1 libxkbcommon0 libxkbcommon-x11-0 \
libfontconfig1 libfreetype6 libwayland-client0 libvulkan1 mesa-vulkan-drivers
# Download and run
curl -L https://github.com/Replicant-Partners/fermi/releases/latest/download/fermi-console-linux-x86_64 \
-o fermi-console && chmod +x fermi-console && ./fermi-consoleBuilding from source
See README.