SKIP TO CONTENT
PIXZ.DEV
← ALL PROJECTSPROJECT 005 / 005

AI AGENT / PRODUCTIVITY — 2026

MYTHICALMIND

STABLEA rundown studio with a multi-provider AI assistant — context in, an executable schedule out; not just another chat answer.
Real screenshot of the MythicalMind productivity home — greeting, quick actions, stats, and the upcoming-event card — captured from the running application (local build of v1.0.0)

FIG. 005 — REAL CAPTURE · LOCAL BUILD

MythicalMind is a local-first productivity workspace for building and managing rundowns — events, meetings, seminars, weddings, down to daily plans — with a streaming multi-provider AI assistant and print-ready PDF export. The entire interface is Indonesian, dressed in an Aurora Night identity. It is released as v1.0.0 and runs on your own machine: all data stays in a local SQLite file, and the AI provider is whatever OpenAI-compatible endpoint you bring.

01  The Problem

Nobody keeps a tidy task list — they keep context. The seminar starts at 08:00, registration needs a crew, the speaker lands at 10:00, lunch has to fit somewhere, and then the MC asks for a door-prize session two days before the event. A spreadsheet holds those rows fine, but it computes nothing: every clock in the time column is typed by hand, so shifting one duration silently invalidates everything below it. An AI chat fixes half the problem — it can draft a plausible flow — but the answer dies as prose. You cannot shorten one segment, reorder two others, assign a PIC, or hand the result to a committee as a printable document. Answering is not managing.

02  The Idea

The idea compresses to one sentence: turn context into an executable rundown. MythicalMind is a workspace, not a chatbot. Thirteen curated templates (wedding, seminar, meeting, townhall, webinar, podcast, competition, school performance, retreat, productive day, exam study, mini event) give a fast start; the AI assistant drafts from a plain description; a spreadsheet-style editor polishes the result; PDF export produces the artifact a committee can actually hold. The principle that holds all of it together is review-before-persist: the AI proposes, the human decides. Nothing a model generated is written to the plan until a person has looked at it.

The template gallery of the new-rundown wizard — thirteen curated starting points with date and start-time pickers
FIG. 01 — The wizard's template gallery: thirteen curated starting points, from weddings to exam-study days.

03  From Context to Plan

The “Susun dengan AI” wizard forces context in structured: name, type, category (event / daily / study / work), date, start time, target duration, goal, audience, notes. The system prompt is Indonesian with a rigid output contract — exactly one valid JSON object, segments sequential without overlap, totals chasing the target duration, PIC as a role. Streaming text from the provider is never trusted directly: an extractor strips code fences and prose wrappers, then zod validates the shape (1–40 segments, 1–600 minutes each). A malformed answer is rejected with a readable message — “some models drift from the format” — instead of poisoning the workspace.

The AI rundown form filled in — name, type, duration 240 minutes, goal, audience, and notes fields
FIG. 02 — The planning input: context enters structured, so the model has something to compute with.

04  An Agent That Works in the Background

This is the part that separates MythicalMind from a thin chat wrapper: generations belong to the server, not the browser. A GenerationManager singleton lives above any HTTP request and any React component. Navigate away — the stream keeps running; refresh the page — the SSE endpoint replays a snapshot plus live deltas; open six generations at once — they run in parallel, isolated, and anything beyond that queues. Each run carries its own AbortController, so the stop button kills exactly one generation and nothing else. Persistence is batched and throttled (750 ms, not one write per token), and on boot the manager recovers rows stuck in “streaming” so a restart never leaves orphans. The UI is only a subscriber.

A conversation mid-generation — the top-bar badge reads one streaming, a red stop button sits in the composer, and the answer grows below the prompt
FIG. 03 — Mid-generation: the runtime badge, the per-run stop button, and text arriving progressively — the user watches the agent work instead of waiting on a spinner.

05  A Preview, Not a Verdict

What the model returns is a proposal, not a decree. The preview shows the title, a suggested start time, and every segment with its duration and PIC — each one adjustable in five-minute steps, deletable, or the whole result can be thrown back to the form via “Ubah input”. The provider and model used are printed above the result (“via Aurora Mock · aurora-pro” in this capture — the repo's own OpenAI-compatible test double), an honest attribution instead of a black box. Only “Simpan & buka editor” commits. That is an architectural decision, not decoration: state a human has not validated never touches the plan database.

The AI-generated rundown preview — seven segments with derived times, per-segment adjust and delete controls, and Save or Cancel actions
FIG. 04 — The generated plan before it exists: derived times, editable durations, provider attribution — nothing is saved until a human says so.

06  A Timeline That Cannot Drift

The classic spreadsheet failure — clocks typed by hand — is solved by refusing to store clocks at all. Segment times are derived: rundown start time plus the cumulative durations above. Type a duration of 45, and start and end clocks compute themselves; reorder segments and the whole time column recalculates; drag nothing, align nothing. The editor is deliberately spreadsheet-like (commit-on-blur, arrow reordering, per-row detail drawers) because the people maintaining a rundown already speak in rows. The timeline strip at the top is a proportional visualization of the same derived data — a read, never a source of truth.

The rundown editor — a colored timeline strip reading 08:00 to 14:10, metadata fields, and a twelve-segment table with derived clocks
FIG. 05 — The editor: fill durations, and every clock is computed — this half-day seminar template carries twelve segments that never drift.

07  Replanning

Reality edits the plan after the plan exists. The core session runs long, the committee adds a door prize, the closing needs a photo op. “Tambah dengan AI” opens extend mode: existing segments are sent as context and the model is asked only for what's missing — not a rewrite from zero. In this capture, the instruction “add a 15-minute door-prize session and a 10-minute closing parade” turned a seven-segment, 4h 10m rundown into nine segments totalling 4h 35m; every clock below the insertion shifted automatically, because times were never stored to begin with. Replanning is not generating a new answer — that is the whole difference.

The editor after AI extension — nine segments, header reading nine segments, total 4h 35m, ends 12:35, with the new door-prize and closing parade rows at the bottom
FIG. 06 — After replanning: 7 segments → 9, 4h 10m → 4h 35m — the added sessions slot in and every derived clock moves itself.

08  Any Provider, No Leaks

MythicalMind refuses to lock you to one vendor. A universal OpenAI-compatible adapter takes any base URL and API key — OpenAI, Groq, OpenRouter, Together, LM Studio, vLLM, or a server on localhost — with automatic model discovery and per-message model switching. The adapter absorbs the quirks so the workspace doesn't have to: a native SSE parser, mapping for DeepSeek-style reasoning deltas, adaptive retry when a gateway rejects stream_options, and an error catalog that turns HTTP failures into readable Indonesian messages. API keys are never sent to the client — the UI only ever receives a masked hint like sk-…abcd. Every rundown, conversation, and provider record lives in one local SQLite file.

The provider hub — Aurora Mock connected with base URL and masked key, eight discovered models, aurora-pro set as default
FIG. 07 — The provider hub: base URL in, models discovered, key masked — the whole surface the workspace knows about a vendor.

09  The Final Artifact: PDF

A rundown is finished when it can be printed and handed to a committee. Export runs client-side through jsPDF + AutoTable, dynamically imported so the editor bundle stays lean: a print-ready A4 document with a brand header, the event metadata, and a seven-column segment table (No, Waktu, Dur, Aktivitas, Detail, PIC, Catatan) carrying the same derived clocks, plus page footers with export date and page numbers. The palette flips to a light print-safe scheme with violet accents — paper, not screen. The capture below is the direct output of the running application, not a mockup.

The exported PDF — an A4 rundown document with the MythicalMind header, event metadata, and the seven-column segment table
FIG. 08 — The export: A4, print-ready, derived clocks in every row — the plan crossing from app to paper.

10  Deployment

As a local-first application, MythicalMind deliberately has no public URL — the data belongs to one machine. The architecture still runs anywhere Node runs: the standalone Next.js 16 build ships the server and assets in one folder, and the only environment it needs is a DATABASE_URL pointing at a SQLite file. That makes a laptop, a Cloud VPS, or AI-oriented hosting like AI Hosting equally valid homes — pick per privacy needs, not per vendor lock-in. Before the v1.0.0 release, a 17-step end-to-end acceptance script runs the real product through real HTTP against a mock provider that genuinely speaks the OpenAI protocol: connect, discover, stream across navigation, parallel generations, stop one of two active runs, refresh-and-resume, error mapping, adaptive retry.

11  What I Learned

Agentic UX is more than an LLM call behind a input box. Structured output is the line between a demo and a tool — one zod schema does more for reliability than any amount of prompt engineering. Derived state beats stored state: a timeline that cannot drift is built by deleting the thing that could. Server-owned generations rewrite the UX contract — the user is allowed to leave, and trust survives the refresh. Provider abstraction is empathy engineering: every quirk the adapter absorbs is a quirk the user never meets. And a mock provider that actually speaks the protocol finds the bugs that function mocks cannot — its fail-401, fail-503, and strict-400 models exist precisely so the retry and error-mapping paths are tested before a real key ever touches them.

E

TECHNOLOGY

Next.js 16React 19Prisma + SQLiteSSE StreamingjsPDF
F

VISUALS

MythicalMind — local-build screenshot 1
MythicalMind — local-build screenshot 2
MythicalMind — local-build screenshot 3
G

Result

Shipped as v1.0.0 (September 2026) with a 17-step end-to-end acceptance script passing against a real OpenAI-compatible mock. Local-first by design — no public deployment, no telemetry: rundowns, conversations, and providers live in one SQLite file. Open source at github.com/pixzdev/MythicalMind.

I

LINKS