medyll
Profile

Lead Developer Fullstack

I build frameworks and use others.
Case studies across TypeScript, Svelte 5, Rust, Go, Python and AI tooling, exploration over finished product.

Profile


Who I am, what I do, and a full experience timeline. View profile →

Featured


  • @medyll/idae-machine
    Started Updated

    DDD multi-tenant platform with MongoDB-like query engine

    Full-stack monorepo powering Idae-Machine, a domain-driven multi-tenant SvelteKit application. Ships a MongoDB-like query engine, real-time socket layer, reactive state management, and a pluggable API backend, all typed end-to-end in TypeScript.

    • · idae-machine · DDD multi-tenant app (v0.136)
    • · idae-query · MongoDB-like query engine
    • · idae-socket / idae-stator · sync and state
    TypeScriptSvelte 5SvelteKitpnpm
    View details →
  • Started Updated

    Native CSS design system: modular, themeable, zero build

    Published CSS design system built entirely on native platform features: cascade layers, OKLCH, light-dark(), CSS @function, and typed attr(). Version 0.7.13 ships modular entry points, reusable components and utilities, plus ten token-only demo skins—with no preprocessor, build step, or JavaScript runtime.

    • · v0.7.13 published on npm
    • · Modular exports · cascade layers · native dark mode
    • · 10 skins from token overrides only
    CSSOKLCH@functionattr()
    View details →
  • Started Updated

    AI writing assistant: production since v1.0

    Full-featured writing application with real-time AI suggestions, narrative coherence analysis, and mobile-first design. Built on SvelteKit 5 and Tailwind v4. Production-ready since v1.0 with a clean, distraction-free editor.

    • · Real-time AI suggestions
    • · Narrative coherence checks
    • · Mobile-ready
    SvelteKitSvelte 5Tailwind v4
    View details →
  • Started Updated

    Shared agent memory with decay, cues and reviewed routines

    Memory engine for AI agents modeled on human recall. It keeps decaying traces, open intentions, provenance and reviewed cognitive scripts in SQLite, then retrieves them through lexical and vector search. Claude hooks plus explicit Codex, Kimi Code and OpenCode importers feed one MCP store; background maintenance stays off the agent path and falls back to deterministic local processing when no model is available.

    • · Offline core with optional model-assisted maintenance
    • · Shared MCP store · provenance · contradiction handling
    • · JEV shadow qualification for reviewed cognitive routines
    TypeScriptBunSQLiteMCPONNXReact
    View details →
  • Started Updated

    One MCP control plane for Kimi, Codex, OpenCode and Ollama

    Extensible MCP control plane that puts ACP, CLI and HTTP-backed agents behind one supervised interface. Bundled adapters cover Kimi, Codex, OpenCode and Ollama; sessions, live progress, cancellation, usage and results follow one contract. Write-capable runs use authorization tokens scoped to the agent, working directory, mode, lifetime and use count.

    • · Kimi · Codex · OpenCode · Ollama adapters
    • · Live progress, cancellation and normalized usage
    • · JEV shadow evaluation for agent routing · scoped write authorization
    JavaScriptNode.jsMCPACPOllama
    View details →
  • Started Updated

    Rust UI framework for reactive web and native desktop apps

    Alpha Rust UI framework with signal/effect reactivity, RSX macros, scoped CSS, keyed lists, routing, context and a growing component library for WebAssembly apps. Its independent desktop runtime uses native webviews without Tauri, and the CLI can scaffold projects and assemble portable desktop bundles.

    • · Fine-grained signals, effects and automatic disposal
    • · RSX · routing · scoped CSS · reusable components
    • · Independent desktop runtime and portable bundles
    RustWASM
    View details →
  • Started Updated

    Local-first AI chat: web, desktop and mobile with Ollama

    Cross-platform AI chat application powered by Ollama for local, private inference. Conversations, companions and settings remain available offline, then RxDB syncs them with PouchDB when the server returns. Voice I/O, RAG, skills, hooks and web agents run in the browser, Electron desktop app and Capacitor mobile app; a provider registry now isolates model backends from conversation orchestration.

    • · Offline conversations and RxDB↔PouchDB sync
    • · Web + Electron desktop + Capacitor mobile
    • · Voice · RAG · skills · hooks · web agents
    Svelte 5ElectronCapacitorNode.jsRxDB
    View details →
  • Started Updated

    AI-driven scene and story production pipeline

    SvelteKit SPA for orchestrating AI-driven story and scene production. Combines an interactive timeline editor with asset management, real-time model inspection, and a CI pipeline on GitHub Actions.

    • · Interactive timeline editor
    • · Real-time model inspection
    • · CI on GitHub Actions
    SvelteKitSvelte 5Vite
    View details →

Libraries and tools


  • Started Updated

    AST-based metadata extractor for Svelte 5 components

    Parses Svelte 5 component source via AST to extract props, exports, generics, and JSDoc comments, generating structured documentation without invoking the compiler. Drop-in for any TypeScript toolchain.

    • · AST analysis, no compiler
    • · Props, exports, generics, JSDoc
    • · TypeScript toolchain integration
    TypeScriptSvelte 5
    View details →
  • Started Updated

    Vanilla HTML component system: 7.7 KB, zero dependencies

    Zero-dependency vanilla HTML component system at 7.7 KB gzip. Provides a structured tag taxonomy, display-hint suffixes, and WCAG 2.2 AA accessibility out of the box, no build step, no framework, no lock-in.

    • · WCAG 2.2 AA out of the box
    • · 7.7 KB gzip total
    • · Zero dependencies, zero build
    HTMLJavaScript
    View details →
  • Started Updated

    ProtonMail via IMAP/SMTP/CardDAV: MCP bridge over hydroxide

    MCP server that bridges ProtonMail's encrypted ecosystem to any standard mail client. Built on top of hydroxide, it exposes IMAP, SMTP, and CardDAV endpoints. Ships with Windows auto-start and zero-config setup.

    • · ProtonMail in any mail client
    • · IMAP / SMTP / CardDAV
    • · Windows auto-start
    TypeScriptMCP
    View details →
  • Started Updated

    Windows 11 notepad backed by a single Markdown file

    Minimal WinUI 3 notepad that persists everything in one Markdown file. Auto-saves every 2 seconds with optional LLM normalization to keep notes structured. Single binary, no sync service, no account.

    • · One Markdown file, no database
    • · 2-second auto-save
    • · Optional LLM normalization
    C#WinUI 3
    View details →
  • Started Updated

    Local job-mail tracking with a CLI, TypeScript API and MCP server

    Published as @medyll/jobmailboard, Mailboard turns Gmail connector and browser-mail collection runs into a searchable local dashboard backed by append-only JSONL files. Its CLI, JavaScript/TypeScript API and stdio MCP server expose message search, ingestion and cycle orchestration. Optional JEV enrichment supports backfilling stored messages and comparing evaluations with human labels.

    • · npm package with CLI and JavaScript/TypeScript API
    • · Eight MCP tools + settings resource over stdio
    • · Searchable JSONL dashboard opens directly from file://
    • · Optional JEV enrichment, backfill and human-label agreement reports
    TypeScriptJavaScriptNode.jsMCPZodJSONLHTMLCSS
    View details →
  • Started Updated

    Android on-device OCR sensor synced over Tailscale

    Android screen-capture sensor for Oppo Find X9. Triggers via Snap Key, runs on-device OCR with ML Kit, and syncs results to an OpenClaw desktop instance over Tailscale, replacing Oppo's proprietary AI Mind Space with a fully self-hosted pipeline.

    • · On-device OCR via ML Kit, no cloud
    • · Sync to desktop over Tailscale
    • · Replaces proprietary AI Mind Space
    KotlinAndroidML Kit
    View details →
  • Started Updated

    Local resume tailor: Ollama rewrite, ATS PDF, Playwright autofill

    Local-first tool that matches your resume to a job description, rewrites targeted sections with Ollama, generates ATS-friendly PDFs, and auto-fills job applications via Playwright. No cloud, no subscription, no data sent externally.

    • · Fully local: no cloud, no API key
    • · Resume + job-URL pipeline
    • · ATS PDF + Playwright autofill
    Python
    View details →

Other work


  • Started Updated

    Migrating a 2014 PHP/MongoDB CMS to a 2026 stack

    Live migration of a legacy PHP 5.6, Node.js and MongoDB CMS onto PHP 8.2, a current MongoDB driver and a Dockerized environment. The original UI and behavior stay intact while Phase 2 rewrites CRUD, session and database internals; Apache/PHP and Socket.IO now run together in one supervised application image.

    • · 12-year-old codebase, still in production
    • · Backward-compatible Phase 2 rewrite
    • · One supervised image for Apache/PHP + Socket.IO
    PHPNode.jsMongoDBDocker
    View details →
  • Started Updated

    PHP/MongoDB REST + IDQL API for the Idae platform

    Lightweight PHP REST API backed by MongoDB, built around a router → API parser → query layer pattern. Exposes a custom IDQL query language for find/group/distinct/parallel operations alongside generic REST endpoints, plus a small Node helper process for sockets and crons. Dockerized with a PHPUnit test suite.

    • · IDQL query language: find, group, distinct, parallel
    • · Router → API parser → query layer architecture
    • · Dockerized with PHPUnit tests
    PHPMongoDBDockerNode.js
    View details →
  • Started Updated

    Client-side IndexedDB the easy way, with server sync

    Client database IndexedDB the easy way, add server sync

    • · React, Vue and Svelte adapters + devtools
    • · CLI and benchmark suite
    • · Sync via idae-socket, offline-first by default
    TypeScriptIndexedDBReactVueSvelte
    View details →
  • Started Updated

    Callback-based DOM manipulation library, always returns the root

    A DOM walk and manipulation library with a callback-based approach for precise element targeting. Unlike jQuery-style chaining, idae-be always returns the root object, using callbacks to reach into nested matches while keeping the chain consistent.

    • · Callback-based targeting, root object always returned
    • · Traversal, styling, attributes, events in one API
    • · Timer integration + HTTP content loading
    TypeScriptDOM
    View details →
  • Started Updated

    CSS and DOM mutation observers for reactive UI code

    Library for observing and reacting to DOM changes: cssDom tracks animations, style changes and resize events, htmlDom.track observes attribute, child-list and character-data mutations. Built for dynamic web applications that need fine-grained change detection.

    • · cssDom: animation/style/resize tracking
    • · htmlDom.track: attribute/child-list/character-data mutations
    • · Flexible callback-based event management
    TypeScriptDOMMutationObserver
    View details →
  • Started Updated

    Framework-agnostic SPA router with SWR cache and typed HTTP fetching

    Lightweight, framework-agnostic client-side router: path parameters, query parsing, lifecycle hooks, declarative HTTP data fetching, an in-memory SWR cache, and full TypeScript generics. Supports nested routes and outlets.

    • · Declarative http/http_source fetching into ctx.data
    • · In-memory SWR cache with hover prefetching
    • · Nested routes with data-idae-outlet mounting
    TypeScriptSvelteVitestPlaywright
    View details →
  • Started Updated

    Universal deep-reactive state via native Proxy, zero dependencies

    Lightweight, universal, deeply reactive state management library. Uses native Proxy to track mutations at any depth in objects and arrays, and exposes both onchange callbacks and a standard EventTarget API, isomorphic across Browser, Node.js and SSR.

    • · Deep reactivity via recursive Proxy + WeakMap cache
    • · Zero dependencies, isomorphic (browser/Node/SSR)
    • · onchange callback + addEventListener dual API
    TypeScriptProxy
    View details →
  • Started Updated

    Offline-first sync engine: outbox, retries, conflict resolution

    Syncs local IndexedDB data to a server automatically, in the background, even offline. Writes are intercepted into an IndexedDB-backed outbox with exponential backoff, circuit breakers, a dead letter queue, and pluggable conflict resolution (last-write-wins, shallow or field-level merge).

    • · Outbox + circuit breaker + dead letter queue
    • · mobile-first / server-first sync modes per collection
    • · SSE/WebSocket push listeners, pluggable conflict resolution
    TypeScriptIndexedDB
    View details →
  • Started Updated

    2019 Ansible playbook provisioning a telco API stack

    Legacy Ansible playbook provisioning a telco API platform (PHP7, Nginx, MySQL, Redis) across dev/preprod/prod. Environment identity and per-host config live in group_vars/host_vars, keeping the common role environment-agnostic. Archived as a portfolio reference with credentials stripped to ansible-vault placeholders.

    • · Same role runs unmodified across dev/preprod/prod
    • · group_vars/host_vars scoping, no hardcoded env in tasks
    • · Credentials stripped to ansible-vault placeholders
    AnsiblePHP7NginxMySQLRedis
    View details →
  • Started Updated

    Research space for formal languages of cognition and org structure

    Exploratory research project defining two formal languages, a matrix topology language and a dynamic structural mapping model, to express cognition and organizational structure. Includes an LLM engine for generating context-aware indicators across 9 domains and an interactive 3D visualization built with Three.js.

    • · Two formal languages: matrix topology + structural mapping
    • · LLM-driven indicator generation across 9 domains
    • · Interactive 3D semantic cloud visualization
    PythonThree.jsLLM
    View details →