About the Project
Inspiration
Let’s face it: modern development is heavily bottlenecked by context switching. Developers constantly bounce between a local IDE, a terminal window, a browser for live previews, GitHub for pull requests, and an external AI chat interface to figure out why things aren't working. We built AsiPilot because we were tired of this fragmented workflow. We wanted to see what happens when you consolidate the entire developer lifecycle—editing, execution, AI assistance, multi-agent code review, and version control—into a single, seamless browser workspace powered natively by the ASI-1 API.
How We Built It
We structured AsiPilot as an npm workspaces monorepo to cleanly separate our concerns across client, server, and shared utilities, optimizing for quick iteration and deployment.
- The Frontend Interface: We built the client using React 18 and Vite for a blazing-fast UI, styled it with Tailwind CSS, and used Zustand to manage the highly complex state of an IDE. To guarantee a professional developer experience, we integrated the Monaco Editor (the engine behind VS Code) for multi-file editing.
- The Backend & Orchestration: A Node.js and Express server acts as the central nervous system.
- AI as the Backbone: We deeply integrated the ASI-1 API. Rather than just building a wrapper, we used ASI-1 to power real-time chat, context-aware inline code completion, and a sophisticated Multi-Agent Review system where specialized agents critique code for security, performance, style, and documentation before a PR is ever opened.
- Real-time Infrastructure: We implemented WebSockets and Server-Sent Events (SSE) to stream AI chat tokens in real-time and provide a fully functional, in-app browser terminal.
- Deployment: The entire environment is containerized using Docker and Docker Compose, with Redis handling pub-sub and coordination.
Challenges We Faced
Building a browser-based IDE from scratch is notoriously difficult, and weaving AI into every layer introduced unique hurdles:
- Real-Time Token Streaming: Managing Zustand state and React re-renders while simultaneously streaming AI response tokens via SSE/WebSockets without tanking frontend performance required rigorous optimization.
- Multi-Agent Orchestration: Coordinating the ASI-1 API to run parallel reviews required complex asynchronous flow control. To ensure a snappy user experience, we had to ensure the total review time was bounded by the slowest individual agent rather than the sum of all their execution times, mathematically optimized as: $$T_{total} = \max(t_{security}, t_{perf}, t_{style}, t_{docs}) + t_{overhead}$$
- Browser-to-Container Terminal: Securely piping terminal I/O over WebSockets from the backend container to the Monaco-adjacent UI required careful handling of stream encodings and lifecycle events.
What We Learned
- Monaco API Mastery: We learned how to deeply customize the Monaco Editor, specifically around injecting inline context and overriding default autocomplete behaviors with our AI service.
- Concurrent State Management: Managing state in an application where the user is typing, the live-preview is updating, the AI is streaming tokens, and the terminal is outputting logs simultaneously taught us a lot about React concurrency.
- Agentic Engineering: We learned how to effectively prompt and orchestrate the ASI-1 model to act as specialized, distinct reviewers rather than a generic assistant. Ultimately, we proved to ourselves that developer velocity $V$ can be massively accelerated by minimizing the context switching penalty $C$: $V \propto \frac{1}{C}$
Built With
- docker
- hugginface
- javascript
- nextjs
- python
- react
- redis
Log in or sign up for Devpost to join the conversation.