- What Is Autopilot?
- AI for Automation
- The Problem We Are Solving
- Why We Built This β The Origin Story
- How We Built It β The Engineering Story
- The "Best Automated Software Engineering" Case
- The Best of What's Inside
- Architecture
- Computer Use β Full Desktop Agent
- Tech Stack
- Getting Started
- AI Providers
- Configuration Reference
- Docker Deployment
- Compile to a Standalone Binary
- NPM Scripts
- Project Structure
- API Overview
- Documentation
- Roadmap
- License
Autopilot is an open-source, self-hosted AI software-engineering copilot. It fuses a multi-agent reasoning system, a sandboxed code execution engine, a vision-capable browser automation layer, deep web research, and a cinematic "film strip" tool-result workspace into a single web application. One natural-language request can turn into working code, a compiled PDF, a researched report, or a completed browser task β all inside one session.
| Term | Does |
|---|---|
| π§ Agent orchestration | A multi_agent brain that picks the right specialist (CodeAct, DeepResearch) per task and can coordinate them |
| β‘ CodeAct engine | Run real JavaScript / Node.js, Python, and Shell in isolated sandboxes with one-line dependency management (npm / pipand persisted memory) |
| π¬ DeepResearch engine | Plan-and-execute research across DuckDuckGo/Google/Bing with source tracking, insight extraction,and auto-generated reports |
| π Browser automation(MCP) | Full vision-capable browser control via Model Context Protocol servers (browser, filesystem, memory,β¦`) β click, type, drag, hover, wait, extract,screenshot |
| π LaTeX PDF pipeline | Turn plain LaTeX into a downloadable/inline-rendered PDF with zero extra tooling |
| ποΈ Session replay | Every tool call is recorded into a film-strip timeline β scrub back,replay,and export a full self-contained HTML replay |
| β‘ Real-time UX | Streaming tokens via Socket.IO + SSE, file attachments,dark mode,glassmorphism UI,Monaco editor,Framer Motion |
Autopilot is built for one purpose: automation. Every capability exists to perform a task end to end β without human intervention.
- π€ Coding tasks β the agent writes and runs real code, no copy-paste
- π¬ Research tasks β plan β search β deep-dive β cited report, unattended
- π Browser tasks β the agent opens the browser, reads the screen, and clicks through
- π±οΈ Desktop tasks β full computer use: opens apps, navigates OS settings, controls the desktop like a human
- ποΈ Every automated action is recorded and replayable
Set the task. Autopilot performs it. No human in the loop.
Every student, hackathon team,and startup engineer hits the same wall. The software-engineering loop is broken across ten disconnected tools:
| # | Problem | What hurts | How Autopilot fixes it |
|---|---|---|---|
| 1 | Agents talk, but they don't do | Chatbots stop at the text β no files written, no code run, no artifacts produced | Every capability is a tool that executes and streams its real result back β web pages fetched, code compiled,PDFs generated |
| 2 | Running AI code is dangerous | Copy-paste into a terminal, guess dependencies,pollute your machine | Sandboxed workspace with path-traversal guards,dangerous-command blocking,per-language isolation,auto dependency install,timeouts,real-time streamed output |
| 3 | Research is shallow & unverifiable | One hallucinated paragraph,no sources,no structure | Plan-and-execute research loop:structured plans,multi-engine searches with domain filters,multi-source visits,insight extraction,source tracking,cited reports |
| 4 | Browsers are the real computer interface β but brittle | Scraping breaks,headless automation opaque,fragile selectors | Vision-capable browser control via MCP β visual steps with screenshots&mouse overlays,reconnect/backoff,health checks |
| 5 | You can't see what the agent is doing | Black-box agents feel untrustworthy β judges&users can't verify work | Film-strip Workspace panel renders every tool result as a contextual card behind playback controls;export standalone HTML replays for demos&judges |
| 6 | Deploying AI software is a pain | Runtimes,dependencies,browser binaries,secrets in ps |
Ships as a single compiled Bun binary,a Docker WebTop desktop app,and start-server.sh that feeds API keys via stdin |
Software-engineeringwith AI shouldn't be a scavenger hunt across ten tools. It should be one self-hosted platform where an agent does the whole engineering loop β plan, search, browse, write, execute,generate artifacts,and replay it all β transparently,and verifiably.
We kept watching the same pattern repeat:brilliant ideas stalled at the gap between "The model knows how" and "The computer did it". Frameworks demos stopped at chat bubbles. Engineering is effects β files created,processes run,pages visited,artifacts shipped. Everything else is theater.
So we set out to build the missing operating system for AI software engineering:a single workspace where the model's intent becomes machine state you can see,replay,and trust. Three design convictions shaped everything:
- π¬ One conversation = one work session
- π οΈ Every answer = a real executed tool
- ποΈ Every action = a replayable film frame
- π¦ One artifact = a shippable binary
| # | Prompt | What you'll see |
|---|---|---|
| 1 | "Write a Python script that plots a sine wave and saves it as a PNG." | CodeAct runs real Python |
| 2 | "Research the latest MCP spec changes and write a cited report." | Plan β search β report |
| 3 | "Open Wikipedia, search for 'Model Context Protocol', extract the summary." | Vision MCP browser |
Building a platform where an LLM can safely drive a computer meant solving eight hard engineering problems. Here's the honest breakdown:
We didn't want one generic agent failing at everything. AgentTARS.ts defines agent archetypes with explicit capability maps(AGENT_CAPABILITIES)and specialization lists. A select_agent tool classifies every incoming task by keywords and picks the best specialist; switch_agent preserves conversation context;and coordinate_agents builds a dependency-graph execution order so subtasks run in the right sequence even with dependencies. Result:one assistant that looks general but internally routes to specialists β exactly how a real engineering team operates.
The riskiest part of letting an LLM "run code" is trust. Our design remade this as a sandboxed subprocess service:
- Per-language isolation: separate
node/,python/,shell/workspaces inside aCODEACT_WORKSPACE. - Just-in-time dependencies:
npm install pkg/pip install pkgbefore execution,with longer install timeouts. - Hard guards: dangerous-command blacklist(
rm -rf /,dd,fork bombsβ¦),timeouts with SIGTERMβSIGKILL escalation,exit codes,duration metadata. - Persistent memory:a key/value store keyed by name so the agent remembers scripts,data,and outputs across turns βthe beginning of an agent-native filesystem.
We replaced single-shot "answer generation" with a plan-and-execute research protocol:
- Multi-engine search(DuckDuckGo,Google,Bing)with
site:filters,and-site:exclusions,and relevance scoring. deep_divevisits top sources,extracts insights by focus area,tracks every URL,and dedupes insights.report_generatorassembles a cited reportin Markdown,HTML,or JSON βwith metadata(sources visited,images collected,generation time.- Research sessions are first-class citizens:
session_managerlists,inspects,and deletes them with live stats.
Ra ther than hand-rolling fragile selectors,we built on the Model Context Protocol,the open standard rushing through the industry. MCPManager handles the full connection lifecycle:stdio transport,exponential-backoff reconnects,retry caps,per-server timeouts,health checks,and a config kill-switch. The bundled default β @agent-infra/mcp-server-browser --vision β gives the agent vision-based browser control. Because MCP tools plug into the same Zod-validated tool registry,the agent seamlessly mixes browser actions with code execution,and research in one plan.
Engineers trust what they can watch happen. SocketService records a timestamped event stream per session(user_message, assistant_thinking, assistant_message, tool_call). That stream powers:
-
the film-strip Workspace panel β every tool result becomes a frame with a dedicated renderer;
-
GET /api/replay/sessions/:id/replayβ a JSON timeline; -
GET /api/replay/sessions/:id/exportβ a self-contained HTML replay with an embedded React+Tailwind timeline you can download,send to a judge,or demo offline.
LLM generation is slow,so slow is death. We built a dual streaming path:Socket.IO events for the web app,and SSE for the REST API. Tokens stream,tool results stream,even the thinking state streams as animated dots. It feels alive because it is alive β every frame of the agent's work arrives the moment it happens.
Conversations are worthless if they vanish on restart. DatabaseService models three tables(sessions, messages, tool_callswith FK cascade deletes),four indexes,and SessionService layers a memory cache on top with auto-generated titles from the first user message. Sessions survive restarts,and the sidebar instantly regroups them by Today / Yesterday / This Week.
"Works on my machine" wasn't acceptable. Three deployment stories:
- Standalone binary:
bun build --compileembeds the entire backend into one executable per target. No Node.js install required. - Docker WebTop:the
docker-compose.ymlspins up a full Linux desktop in the browser(KDE)with Autopilot installed as a desktop app + Chromium preinstalled for MCP browser tools. - CI release pipeline:
.github/workflows/release.ymlfires on everymainpush β builds the frontend,compiles 4 binaries ona matrix,and attaches them to an auto-incremented GitHub Release. Push to main = software released.
- π€ Give agents a filesystem,not just a prompt
- π‘οΈ Trust is engineered:sandbox,blacklist,validate
- ποΈ Replayability is what makes AI feel safe
- π¦ Compile everything β deployment is UX too
Judges ask three questions:Substance, Execution, Business. Here's how Autopilot answers each β by design,not by accident:
###Substance β real problem,deep attempt
| Criterion | Autopilot's answer |
|---|---|
| Strength of problem | The AI-engineering gap:models reason but can't do. We scaffolded the missing effects layer β sandboxed execution,real browser control,artifact generation. |
| Originality | Not a chatbot wrapper:,a multi-agent orchestration + tool-execution + replay workspace βthe "film strip" timeline you can scrub,and export as HTML |
| Technical depth | Eight hard systems in one repo:agent selection&coordination,sandboxed languages w/ auto-deps,plan-and-execute research,MCP lifecycle mgr,replay engine,dual streaming,SQLite schema design,multi-target compile+CI releases. |
| Criterion | Autopilot's answer |
|---|---|
| Functionality | It does things:runs Node/Python/Shell,browseswith vision,researches w/ citations,generates PDFs β all streamed live into a three-panel IDE-like workspace. |
| Implementation | TypeScript strict throughout;every tool parameter Zod-validated;path-traversal guards;dangerous-command blacklists;CSP via Helmet;graceful shutdown;error handlers. |
| UX & demonstration | Thinking dots,gradient focus ring,connection banner,dark/light themes,Monaco editor,film-strip playback w/ speed control,and one-click HTML replay export β a built-in demo delivery mechanism. |
| Criterion | Autopilot's answer |
|---|---|
| Target user | Students automating homework,hackathon teams needing a research+code copilot,indie hackers shipping scripts,anyone who wants a self-hosted agentthat actually does work on their own machine. |
| Real-world potential | An open platform with pluggable MCP servers β today browser;tomorrow GitHub,Slack,Postgres,Kubernetes. The same architecture scales from local hacking to production automation. |
| Why it matters | As agents get smarter,the bottleneck shifts from reasoning quality to safe,observable,effectful action. Autopilot is a working answer to that bottleneck β and it runs anywhere(binary,Docker,desktop. |
- Three agent archetypes:AI Assistant(all tools),CodeAct Agent(sandboxed code),DeepResearch Agent(plan-and-execute research.
- Automatic agent selection by task keywords,plus explicit tools to
select_agent,list_agents,switch_agent(with context preservation),andcoordinate_agents(dependency-graph execution ordering for sequential/parallel/dependency modes).
###β‘ CodeAct Sandbox
node_codeact: run Node.js/JS + `npm install` deps
python_codeact: run Python + `pip install` packages
shell_codeact: run bash/sh/zsh + dangerous-command blocking
codeact_memory: persistent key/value memory across sessions- Real-time stdout/stderr streaming,timeouts,exit codes,duration metadata,auto-installed dependencies,isolated per-language workspaces,and Monaco-based renderer with copy buttons.
###π¬ DeepResearch Engine
research_plan:create/update/get research plans&sessions.search:DuckDuckGo/Google/Bing with domainsite:filters,and-site:exclusions,relevance scoring,instant-answer support.visit_link/deep_dive:multi-source analysis with focus-area insight extraction,and URL deduplication.report_generator:Markdown / HTML / JSON reports from collected sources+images.session_manager:list / inspect / delete research sessions with stats.
- Driven by the Model Context Protocol β connect any MCP server;
- Bundled default:
@agent-infra/mcp-server-browser --vision. - 21+ specialized renderers for browser results:click/double-click/right-click,hover,drag&drop,form fill/type,wait,extract/text/links/clickable-elements β each shown as a visual step.
web_search(enhanced),visit_link(readability-extracted content via Turndown/Mozilla Readability),file_read/list_files/create_directory(sandboxed workspace),execute_command(shell selection,timeouts,security blocks),generate_latex_pdf(compilespdflatexβ PDF served at/api/pdf/:name).
- Three-panel layout:Recent Tasks sidebar,Chat,Workspace/Computer(film-strip timeline of tool results with playback controls,per-frame renderers.
- Gradient focus border on input,animated thinking dots,connection status banner,one-click Export Replay.
- Every
user_message,assistant_thinking,assistant_message,andtool_callis recorded per session. - Replay API:
GET /api/replay/sessions/:id/replay(JSON)and/export(self-contained HTML with embedded data+timeline UI). - Sessions persist in SQLite(
data/sessions.db)with indexes on session/message/tool-call,and cascade deletes. Auto-generated titles from first message.
- Path validation β no directory traversal out of
workspace/. - Dangerous command blacklist(
rm -rf /,dd,mkfs,fork bomb,β¦). - Helmet CSP headers+CORS allow-listing.
- Sanitized PDF filenames,403 on escape.
- MCP connections with exponential backoff reconnect,max-retry caps,timeouts,health checks,and kill-switch.
start-server.shfeeds env vars via stdin temp file β API keys never visiblein process listings.
- React 18+TypeScript+Vite+Tailwind,React Router(shareable
/sessionIdURLs,dark/light theme withnext-themes,Framer Motion animations,Monaco editor,react-markdown+GFM+rehype-highlight,glassmorphism panes,macOS traffic-light header,gradient accent system.
###System Overview
flowchart LR
U[User / Web Browser] -->|Socket.IO / SSE| F[Autopilot Frontend<br/>React 18 β’ Vite β’ Tailwind]
U -->|HTTPS REST| B[Autopilot Backend<br/>Express β’ Bun β’ SQLite]
F -->|socket.io events| S[SocketService<br/>streaming β’ session rooms]
F -->|/api/*| R[Express Routes<br/>chat β’ sessions β’ replay]
S --> A[AIService<br/>Vercel AI SDK]
R --> A
A -->|tools| T[Tool Registry<br/>getAllTools]
A -->|model call| M[(AI Provider<br/>Anthropic β’ OpenAI β’ Gemini<br/>Ollama β’ OpenRouter)]
T --> C[CodeAct Sandbox<br/>node β’ python β’ shell]
T --> D[DeepResearch<br/>plan β’ search β’ deep-dive β’ report]
T --> P[LaTeX PDF<br/>pdflatex]
T --> F2[File System Ops<br/>sandboxed workspace]
T -->|MCP| MCP[MCP Manager<br/>stdio transport β’ retries]
MCP --> MB[(external MCP servers<br/>browser β’ memory β’ filesystem...)]
B --> DB[(SQLite<br/>sessions β’ messages β’ tool_calls)]
B --> R2[Replay Engine<br/>film-strip timeline β’ HTML export]
R2 --> F
sequenceDiagram
participant U as User
participant FS as Frontend(Chat)
participant SS as SocketService
participant AI as AIService
participant T as Tool Registry
participant CA as CodeAct Sandbox
participant DR as DeepResearch
participant M as MCP / Browser
U->>FS: "Research XOR, run it, print to PDF"
FS->>SS: send_message (+attachments)
SS->>SS: record replay event
SS->>AI: streamResponse(multi_agent)
AI->>T: getAllTools() β tools+orchestration
AI->>AI: select_agent β best fit
AI->>DR: research_plan β search β deep_dive
DR-->>AI: sources+insights
AI->>CA: python_codeact(pandas...)
CA-->>AI: stdout+exit code+duration
AI->>M: browser_navigate/click(MCP)
M-->>AI: screenshot+page state
AI->>T: generate_latex_pdf β worker.pdf
T-->>AI: PDF path+status
AI-->>SS: tool_result per step
SS-->>F: film-strip frame+new_message
U->>FS: Export Replay β HTML
graph TD
ROOT["Autopilot (monorepo)"] --> BE["backend (Express + AI SDK)"]
ROOT --> FE["frontend (React + Vite)"]
ROOT --> DOCS["docs/"]
ROOT --> OPS["Dockerfile β’ Makefile β’ start-server.sh"]
BE --> AG["agents: AgentTARS, CodeAct, DeepResearch"]
BE --> SV["services: AIService, MCPManager, SocketService, SessionService, DatabaseService"]
BE --> TL["tools: command-execution, file-system, latex-pdf, mcp"]
BE --> RT["routes: chat, sessions, replay"]
BE --> DB[(SQLite data/sessions.db)]
BE --> WS[(sandboxed workspace/)]
FE --> CH["components/chat"]
FE --> WB["components/workspace (film strip)"]
FE --> TR["components/tools/renderers (21+)"]
FE --> H["hooks: useChat, useSocket"]
Beyond the browser, Autopilot operates an entire desktop. It opens applications, navigates OS-level settings, interacts with files, and performs step-by-step actions like a human. Every action runs through a screenshot loop β the agent captures the screen, reasons about the visual result, and verifies each step before moving on β with the whole session streamed live.
Demo: instruct the agent to change the default search engine from Google to DuckDuckGo. It opens Firefox, reads the screen, clicks through the menu β Settings β Search, and completes the change β with the agent's reasoning visible in real time alongside the live remote desktop.
Powered by the Docker WebTop desktop image (Firefox + Chromium). Each session is isolated and observable β no human intervention required.
| Layer | Technologies |
|---|---|
| Language | TypeScript (strict), ESM |
| Runtime / Tooling | Bun β₯ 1.0, Node β₯ 18, pnpm workspaces |
| Backend | Express 4, Socket.IO 4, Helmet, CORS, Vercel AI SDK, @ai-sdk/{openai,anthropic,google}, @openrouter/ai-sdk-provider, ollama-ai-provider |
| Sandbox execution | child_process spawn with timeouts, isolated workspaces, auto npm / pip installs |
| Database | SQLite via bun:sqlite (sessions,messages,tool_calls with indexes) |
| Research | DuckDuckGo Instant Answer API, Mozilla Readability, Turndown (HTMLβMarkdown), jsdom |
| Browser / MCP | @modelcontextprotocol/sdk, @agent-infra/browser, stdio transport, puppeteer |
| Computer Use | Docker WebTop desktop (Firefox + Chromium), screenshot-based vision loop |
| pdflatex (LaTeX β PDF), streamed via Express | |
| Frontend | React 18, Vite 7, Tailwind CSS 3, Framer Motion, react-router-dom, jotai, react-markdown, react-syntax-highlighter, Monaco Editor, socket.io-client, next-themes |
| Validation | Zod schemas on every tool parameter |
| Deploy | Docker (WebTop desktop), Bun --compile standalone binaries, GitHub Actions release pipeline |
- Bun β₯ 1.0 (runtime + package manager + bundler)
- Node.js β₯ 18
- One AI provider API key (Anthropic, OpenAI, Google, OpenRouter β or a local Ollama server)
- (optional) pdflatex for the LaTeX PDF tool
git clone https://github.com/digiflowhelp-stack/Autopilot.git
cd Autopilotbun installWorkspaces(frontend,backend)install together. On resource-constrained CI you can skip the Chromium download:
PUPPETEER_SKIP_DOWNLOAD=true bun install.
cp.env.example.envMinimal Anthropic example:
AI_MODEL=claude-sonnet-4-20250514
AI_PROVIDER=anthropic
ANTHROPIC_API_KEY=sk-ant-..bun run dev:watchThat runs the backend(bun --watch,port 3001)and hot-rebuilds the frontend into backend/public,served by the same Express server.
| URL | What |
|---|---|
| http://localhost:9005 | Frontend dev server (Vite proxy β backend) |
| http://localhost:3001 | Backend API + Socket.IO + served frontend |
| http://localhost:3001/health | Health check |
Ports: backend PORT (default 3001), frontend dev 9005, WebTop Docker desktop 6901.
curl http://localhost:3001/health| Provider | .env |
|---|---|
| Anthropic Claude | AI_PROVIDER=anthropic Β· AI_MODEL=claude-sonnet-4-20250514 Β· ANTHROPIC_API_KEY=... |
| OpenAI GPT | AI_PROVIDER=openai Β· AI_MODEL=gpt-4o Β· OPENAI_API_KEY=... |
| OpenAI-compatible (LiteLLM / vLLM / LocalAI) | add OPENAI_BASE_URL=http://host:4000 |
| Google Gemini | AI_PROVIDER=google Β· AI_MODEL=gemini-1.5-pro Β· GOOGLE_GENERATIVE_AI_API_KEY=... |
| Ollama (local, free) | AI_PROVIDER=ollama Β· AI_MODEL=llama3.1:8b (no key β run ollama serve) |
| OpenRouter (one key, many models) | AI_PROVIDER=openrouter Β· AI_MODEL=anthropic/claude-3.5-sonnet Β· OPENROUTER_API_KEY=... |
Full provider guide: docs/AI_PROVIDERS.md
| Variable | Default | Purpose |
|---|---|---|
AI_PROVIDER |
(required) | anthropic, openai, google, ollama, openrouter |
AI_MODEL |
(required) | Model id per provider |
ANTHROPIC_API_KEY / OPENAI_API_KEY / GOOGLE_GENERATIVE_AI_API_KEY / OPENROUTER_API_KEY |
β | Provider keys (Ollama needs none) |
OPENAI_BASE_URL |
β | Custom OpenAI-compatible endpoint (LiteLLM, vLLM, LocalAI...) |
AI_TEMPERATURE |
0.7 | Sampling temperature |
AI_MAX_TOKENS |
4000 | Max tokens per response |
PORT |
3001 | Backend / API port |
FRONTEND_URL |
http://localhost:9005 | CORS / Socket.IO origin |
NODE_ENV |
development | Runtime mode |
WORKSPACE_PATH |
./workspace | Sandbox root for file/code tools |
MCP_CONFIG_PATH |
./mcp-config.json | MCP server definitions |
DATABASE_PATH |
./data/sessions.db | SQLite file location |
See also [docs/CONFIGURATION.md](docs/CONFIGURATION.md.
Two flavors:
###A. Standalone (quickest)
services:
terminator:
build:.
ports:
- "6901:6901" # WebTop desktop
- "9005:9005" # Autopilot UI
volumes:
-./config:/config
- /var/run/docker.sock:/var/run/docker.sock # optional
shm_size: "1gb" # headroom for Chromium
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
security_opt: [seccomp:unconfined] # optionaldocker-compose build && docker-compose up -dOpen http://localhost:6901 for the full Linux desktop (KDE), double-click the Autopilot shortcut, or run /app/start-terminator.sh β your AI platform lands at http://localhost:9005.
Mount your key:
volumes:
-./.env:/app/terminator/.env###B. Binary-style image
Compile a standalone binary (below), place it in dist/terminator-linux, then docker build β the image runs ./dist/terminator-linux with Chromium preinstalled,desktop shortcut included.
Full walkthrough: DOCKER.md
Bun can embed the entire backend into a single executable β no Node install needed on the target machine:
# 1) Build the frontend into backend/public
bun run build
# 2) Compile the server (cross-platform targets)
mkdir -p./dist
bun run compile:linux # bun-linux-x64
bun run compile:windows # bun-windows-x64
# Manual:
bun build backend/src/index.ts --compile --target=bun-linux-x64 --external puppeteer --outfile=./dist/iris-server-linux
# 3) Ship it with the static frontend
cp -r backend/public./dist/The GitHub Actions release workflow (release.yml) already builds 4 binaries (Linux x64/arm64, macOS x64/arm64) + frontend tarball on every main push,and attaches them to a release.
| Script | Description |
|---|---|
bun run dev |
Run backend + frontend dev servers concurrently |
bun run dev:watch |
Backend watch + auto-rebuild frontend on change (recommended) |
bun run build |
Build frontend β backend/public |
bun run start |
Start the compiled/backend server |
bun run compile |
Build frontend + compile full server binary (excludes puppeteer) |
bun run compile:linux / compile:windows |
Cross-compile standalone binaries |
bun run lint / type-check / test |
Quality gates across workspaces |
bun run clean |
Clean all workspace artifacts |
./start-server.sh |
Secure startup β API key via stdin, never in ps |
./kill-port.sh <port> |
Kill whatever sits on a port |
./convert-demo.sh <video> |
Rebuild demo.gif from an MP4 |
βββ backend/ # Express + AI SDK server (Bun)
β βββ mcp-config.json # MCP server definitions (browser,...)
β βββ src/
β β βββ index.ts # Entry: Express, Socket.IO,CSP,PDF serving
β β βββ agents/
β β β βββ AgentTARS.ts # multi-agent orchestration + selection
β β β βββ CodeActAgent.ts # sandboxed code execution (node/python/shell)
β β β βββ DeepResearchAgent.ts # plan-and-execute research engine
β β β βββ research/ # search, deep-dive,report generator,sessions
β β βββ services/
β β β βββ AIService.ts # streaming/generate via Vercel AI SDK
β β β βββ MCPManager.ts # MCP lifecycle:connect,retry,execute
β β β βββ SocketService.ts # real-time streaming + replay event capture
β β β βββ SessionService.ts # session CRUD + auto titles
β β β βββ DatabaseService.ts # SQLite schema + indexes
β β βββ routes/ # chat, sessions,replay (JSON + HTML export)
β β βββ config/providers.ts # provider validation
β β βββ services/tools/ # command-execution,file-system,latex-pdf,mcp
β βββ workspace/ # sandbox for agent file/code ops
βββ frontend/ # React 18 + Vite + Tailwind (builds β backend/public)
β βββ src/
β βββ components/
β β βββ chat/ # ChatInterface,ChatInput,ChatMessage (MD + code)
β β βββ workspace/ # film-strip WorkspacePanel + playback hooks
β β βββ tools/renderers/ # 21+ result renderers (browser, codeact,
β β β # deep-research,pdf,command,json,search...)
β β βββ layout/ sidebar/ ui/ about/
β βββ hooks/ lib/ contexts/ # useChat,useSocket,socket client,theme
βββ docs/ # architecture,providers,config,api,getting-started
βββ Dockerfile # WebTop KDE desktop image w/ Autopilot
βββ docker-compose.yml
βββ.github/workflows/release.yml # auto release + 4 binaries on every push
βββ Makefile # docker build/push/exec helpers
βββ demo.gif # the demo
| Method | Route | Purpose |
|---|---|---|
GET |
/health |
Liveness + version |
POST |
/api/chat/message |
Send message ({sessionId, message, stream?}; SSE stream supported) |
GET |
/api/chat/config Β· POST /api/chat/config |
Read / hot-update AI model config |
GET |
/api/sessions Β· POST /api/sessions |
List / create sessions |
GET |
/api/sessions/:id Β· PUT :id |
Read / update session (title) |
GET |
/api/replay/sessions/:id/replay |
Full replay timeline (JSON) |
GET |
/api/replay/sessions/:id/export |
Download self-contained HTML replay |
GET |
/api/pdf/:filename |
Stream a generated PDF (path-traversal-safe) |
Socket.IO events: create_session, join_session, leave_session, send_message, get_sessions, delete_session β new_message, message_chunk, assistant_thinking, tool_result, session_messages, session_created,.. All session events are recorded for replay.
Full reference: [docs/API_REFERENCE.md](docs/API_REFERENCE.md
- Introduction
- Getting Started
- Configuration
- Features
- Project Architecture
- AI Providers
- API Reference
- MCP Integration
- Docker Setup
- SSE transport for remote MCP servers (URL-based, auth headers)
- Per-agent memory pipelines shared across CodeAct / DeepResearch sessions
- GUI automation agent (vision-first)
- Multi-user auth (sessions scoped per user)
- RAG / knowledge-graph backend
- One-click "Ship" flow: agent β PR/artifact β deployed demo
- Recording: playback for full browser sessions
- Repository: github.com/digiflowhelp-stack/Autopilot
- License: MIT
- π₯οΈ Live demo: Local-first by design. ...
Released under the MIT License
Built for EvoHackathon 2026 β automation for AI. Built by Daniyal Khan.
