← Back to work

Moris IDE

Production-grade, AI-powered full-stack cloud coding assistant operating entirely in-browser — boots an isolated Node.js WebContainers micro-OS with multi-agent reasoning networks and OAuth-gated GitHub Git pipelines.


THE PROBLEM

Traditional web development requires installing Node.js, package managers, .env files, and local servers, creating onboarding friction. Furthermore, standard LLM chat tools lack direct access to user file systems (leading to out-of-context hallucinations), storing large source code files in real-time document DBs causes WebSocket bloat, and moving code to version control requires manual zip downloads and CLI push commands.

WHAT I BUILT

  • Browser-Native WebContainers Micro-OS: Executes Node.js directly inside an isolated WebAssembly/SharedArrayBuffer browser sandbox, enabling non-blocking shell command execution ('npm install', 'npm run dev' spawned via xterm.js v6) and live hot-reloading web preview hosting on port 3000 with zero cloud VMs
  • Inngest Agent Kit & Polaris Multi-Agent Network: Structures autonomous multi-step reasoning networks looping between LLM inference and 8 deterministic tools ('listFiles', 'readFiles', 'updateFile', 'createFiles', 'createFolder', 'renameFile', 'deleteFiles', and 'scrapeUrls' via Firecrawl) to inspect directories and verify AST validity before mutating code
  • Real-Time Conversational Telemetry & Title Generation: An asynchronous Inngest worker ('processMessage') hydates up to 10 conversation messages, triggers a secondary 'title-generator' agent, and flushes live chain-of-thought tool execution descriptions to Convex WebSockets via 'setThinkingContent' for instant user UI feedback
  • Tri-Modal High-Performance Storage Architecture: Offloads raw text source code to Azure Blob Storage ('buildBlobPath') and compiled binary assets (images, fonts) to Convex Blob Storage ('v.id("_storage")'), retaining only lightweight filesystem metadata and depth-indexed tree structures in real-time relational tables
  • OAuth-Gated Octokit GitHub Import/Export Pipelines: Securely extracts decrypted GitHub OAuth tokens from Clerk's vault ('getUserOauthAccessToken') to import repositories (sorting folders by depth to preserve parentId integrity) and export AI-built projects by programmatically constructing Git blobs, trees, commits, and fast-forwarding 'heads/main'
  • Comprehensive 15-Integration Stack: Integrated with OpenRouter AI Gateway (Claude 3.5 Sonnet, GPT-4o, Gemini 1.5 Pro, Groq, Mistral, Moonshot), CodeMirror 6 with 20+ language extensions and indentation markers, Zustand v5 state synchronization, Ky HTTP client, and Sentry v10 edge observability

TECHNOLOGY STACK

Next.js 16Next.js 16ReactReactConvexConvexInngestInngestTypeScriptTypeScriptTailwind CSSTailwind CSSOpenAIOpenAIAnthropicAnthropicGitHubGitHubVercelVercelAzureAzure
TECHNICAL HIGHLIGHT

When a user triggers an export ('github/export.repo'), an Inngest background worker extracts the decrypted GitHub OAuth token from Clerk's vault, initializes a new repository ('auto_init: true'), and acquires the initial commit SHA. It then iterates through all project files (downloading UTF-8 text from Azure Blob Storage and Base64 binary arrays from Convex), posts them via Octokit to generate blob SHAs, constructs a unified Git tree, creates a new commit, and fast-forwards 'heads/main' — executing an entire version control push server-side without manual user Git commands.