Loading Mind is a runnable Agent Process OS prototype for long-running AI research tasks. It turns waiting time into an observable work surface: tool calls, observations, evidence, claims, and report sections are streamed into a live process graph while the run is still happening.
The product is no longer a prerecorded loading demo. A user submits a research question, the local Agent runtime creates a run, streams live events over SSE, calls limited real tools, grows a knowledge graph, and writes a final report whose sections map back to source nodes. Tool failure is also first-class: failed calls remain visible in the graph and stop or degrade the run according to explicit runtime rules.
- Runs a local Agent runtime through Vite middleware.
- Streams run events over Server-Sent Events.
- Visualizes task intent, research plans, search branches, sources, evidence, verification, examples, visualizations, claims, and report sections as a force-directed canvas.
- Exposes tool I/O, source refs, episodes, attributes, and report mapping through a node inspector.
- Fails loudly when critical tools fail instead of silently synthesizing from empty results.
- Runs the default
demo_deep_researchorchestration with an 8-12 source budget, cross-checking, example generation, and structured report blocks. - Persists local run events under
.agent-runs/for inspection while keeping them out of git.
- React 18
- Vite
- TypeScript
- D3 force simulation
- Framer Motion
- Vitest
- Local Node/Vite middleware for the runtime API
npm install
npm run devOpen the local Vite URL shown in the terminal.
The Vite dev server also mounts the local runtime API:
POST /api/runscreates an Agent run.GET /api/runs/:runId/eventsstreams Agent events with SSE.POST /api/runs/:runId/pausepauses the run.POST /api/runs/:runId/resumeresumes the run.POST /api/runs/:runId/cancelcancels the run.POST /api/runs/:runId/retryappends a visible retry node for a failed tool.POST /api/runs/:runId/excludemarks an evidence node as excluded.
Recorded run events are persisted under .agent-runs/ and ignored by git.
The app can run as a public Vercel demo without long-lived server memory. In production, POST /api/runs returns a completed run snapshot with replayable events, and the frontend replays those events locally. This keeps the demo compatible with serverless functions while preserving the visible Agent process.
Vercel endpoints:
POST /api/runscreates and completes a serverless snapshot run.GET /api/diagnosticsreports delivery mode, orchestration metadata, registered tool runners, and basic network probes.
Default public run interface:
runMode: "demo"for stable sandbox playback or"live"for real tool executionresearchMode: "demo_deep_research"sourceBudget: 12with a hard cap of 12visualization: "auto"
Useful environment variables:
LOADING_MIND_PROVIDER_API_KEY,MIMO_API_KEY, orOPENAI_API_KEYsupplies the provider key server-side.TAVILY_API_KEYenables Live search through Tavily.BRAVE_SEARCH_API_KEYenables Brave Search as the first Live search fallback.FIRECRAWL_API_KEYenables Firecrawl Search and Scrape fallback.EXA_API_KEYenables the allowlistedexa.searchMCP-style semantic search adapter.LOADING_MIND_DEMO_MODE=1allows demo fallback observations when external tools are unavailable.LOADING_MIND_FORCE_DEMO_TOOLS=1forces built-in demo tool outputs for public trial stability.
Demo mode keeps sandbox fallbacks available for a stable public presentation. Live mode disables silent demo fallbacks: search runs through Tavily, then Brave Search, then Firecrawl Search when keys are configured. Failed runs record structured error logs and render a failure report with run id, failed tool, error type, redacted input summary, and next action.
In local development, search keys can be provided either through .env.local or the matching key fields in the run configuration form. Form values are used only for the submitted run and are not written into run metadata.
Local development still uses the Vite middleware and SSE runtime so pause, resume, cancel, retry, and exclude interactions remain available while iterating.
- Enter a real research question and start the run.
- Watch the graph grow from task intent to research plan, search branches, sources, evidence cards, verification, examples, visualizations, and report sections.
- Click a node to inspect summary, attributes, episodes, source refs, tool input/output, and report mapping.
- Pause/resume/cancel the run from the control cluster.
- Retry a failed tool node or exclude an evidence node from the inspector.
- When the long report appears, open the right-side report drawer to inspect rendered Markdown, source matrix, cross-check table, Mermaid structure, and claim graph.
- Click a section or block to highlight the source graph path.
- Waiting is treated as an observable work surface, not an empty spinner.
- Tool calls are first-class graph nodes; success and failure are both visible.
- Evidence nodes carry source refs and quotes, so users can inspect what the Agent used.
- Claims and report sections are generated from visible process nodes after cross-checking source support.
- Visual blocks make the report inspectable before reading every paragraph.
- The final report is not detached from the process; every section maps back to source node IDs.
web_searchfailure stops the run and emitsrun_failed.web_fetchfailure can continue only when search still returned usable observations; the graph records a degraded observation.evidence_extract,llm_analyze, andreport_writefailures stop the run before normal report synthesis.report_writeoutput is validated before completion; malformed reports are normalized when possible or converted into a failure report.- Failed tool nodes stay visible and inspectable instead of being replaced by empty evidence.
Project update rules live in docs/PROJECT_UPDATES.md. Keep user-facing changes reflected in CHANGELOG.md, and run the verification commands below before publishing.
npm test
npm run buildThis repository is the first public version of the Loading Mind prototype. The project is intended for product and engineering iteration, not production deployment.