You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: AGENTS.md
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,6 +13,7 @@ npm run go:test # go test ./...
13
13
npm run test# vitest run --environment jsdom (frontend tests)
14
14
npm run build # vite build (frontend only)
15
15
npm run server:build # go build -o server ./cmd/server
16
+
npm run binary:build # build frontend + embed assets into single Go binary
16
17
```
17
18
18
19
### Dev workflow
@@ -68,7 +69,7 @@ go test ./internal/chat/ -run TestCreateAndListSessions
68
69
|`hooks/`| Custom hooks |
69
70
|`config/`| Monaco language setup (TS/JS diagnostics, Vue/Svelte) |
70
71
71
-
Vite builds two entry points: `frontend/index.html` (terminal) and `frontend/ide.html` (IDE). Output goes to `dist/`.
72
+
Vite builds two entry points: `frontend/index.html` (terminal) and `frontend/ide.html` (IDE). Normal frontend output goes to `dist/`. Release binaries use `npm run binary:build`, which builds the frontend into `internal/webassets/dist/` and embeds it with the `embedassets` Go build tag.
9ed is a self-hosted browser IDE designed for agent-assisted development. It combines a Monaco editor, PTY terminals, git source control, ACP-powered AI chat, and an inspectable in-app browser into one responsive workspace.
29
+
30
+
It runs as a normal Go server during development and can also be shipped as a single embedded binary for releases.
31
+
32
+
## Why 9ed?
33
+
34
+
| Focus | What it gives you |
35
+
|-------|-------------------|
36
+
| Local-first control | Your workspace, terminal sessions, git operations, and browser tools stay behind your own server and Basic Auth. |
37
+
| Agent-ready workflow | AI chat can see terminal context, route commands into the active terminal, and attach inspected browser elements to prompts. |
38
+
| Portable delivery | Production builds can embed the frontend into the Go binary, leaving only the binary and `.env` to deploy. |
39
+
40
+
## Preview
41
+
42
+

-**Consistent state across all form factors**— desktop, tablet, and mobile share the same Zustand state
77
-
-**Desktop** (≥1024px): Full panel layout with resizable sidebar, editor, terminal, chat
78
-
-**Tablet** (768–1023px): Overlay sidebar and chat panels
113
+
-**Consistent state across all form factors**- desktop, tablet, and mobile share the same Zustand state
114
+
-**Desktop** (>=1024px): Full panel layout with resizable sidebar, editor, terminal, chat
115
+
-**Tablet** (768-1023px): Overlay sidebar and chat panels
79
116
-**Mobile** (<768px): Single-panel view with bottom navigation
80
-
- Responsive layout mode changes preserve panel state — no remounting or data loss
117
+
- Responsive layout mode changes preserve panel state - no remounting or data loss
81
118
- File/git click auto-switches to editor view on mobile/tablet
82
119
- Floating save button on mobile/tablet
83
120
@@ -102,7 +139,7 @@ Browser-based IDE with terminal, git source control, AI chat (ACP + PTY), browse
102
139
- Cross-tab navigation via postMessage protocol
103
140
104
141
### Tunnel
105
-
- Auto-start tunnel for public access — no manual setup needed
142
+
- Auto-start tunnel for public access - no manual setup needed
106
143
-**Cloudflare** (default): Quick tunnel via `cloudflared`, generates random public URL
107
144
-**Bore**: Fixed port tunnel via `bore.pub`, auto-installs binary
108
145
- Toggle with `TUNNEL=true/false`, select engine with `TUNNEL_ENGINE=cloudflare|bore`
@@ -136,18 +173,29 @@ npm run start
136
173
|`npm run dev`| Vite dev server (frontend hot reload) |
137
174
|`npm run build`| Build frontend |
138
175
|`npm run server:build`| Compile Go binary |
176
+
|`npm run binary:build`| Build frontend and embed it into a single Go binary |
139
177
|`npm run check`| TypeScript typecheck + Go vet |
140
178
|`npm run go:test`| Run all Go tests |
141
179
|`npm run go:build`| Build all Go packages |
142
180
|`npm run typecheck`| TypeScript typecheck only |
143
181
182
+
## Release Binaries
183
+
184
+
Release binaries are built with the frontend embedded into the Go executable.
185
+
186
+
```bash
187
+
npm run binary:build
188
+
```
189
+
190
+
For a deployed release, keep the generated binary next to a `.env` file with `BASIC_AUTH_USERNAME`, `BASIC_AUTH_PASSWORD`, and any runtime options you need. The server will serve the embedded app first and fall back to `dist/` only for local development builds.
0 commit comments