diff --git a/AGENTS.md b/AGENTS.md index ffe6af20..d554d860 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -2,16 +2,21 @@ ## Coding Standards +- Write prose in ASD-STE100 (Simplified Technical English). + Use active voice and simple tenses. + One instruction per sentence. + Keep sentences ≤20 words. + One word per meaning, no idioms. + Applies to replies, commits, comments, error messages, UI copy, and docs. + Code identifiers, commands, and paths stay verbatim. +- Treat speed and memory as features. + Keep the app and the server light. + Prefer targeted updates over full rebuilds. + Keep heavy work off the main thread. + Measure before you claim a win. - TDD: write a failing test before production logic (red → green → refactor). - Apply SOLID; if you can't explain why a change respects each of the five principles, it probably violates one. -- Never leave a verified bug unfixed: once a bug is confirmed real, fix it even when it lies outside the current diff or task scope. If fixing it right now is genuinely unsafe or too large, flag it explicitly instead of silently moving on. - -## Cursor Cloud specific instructions - -Standard build/run/test commands live in [`docs/DEVELOPMENT.md`](docs/DEVELOPMENT.md); this section only covers cloud-specific caveats. The update script already runs `pnpm install` (server) and `flutter pub get` (app) on startup. - -- **Toolchain locations (Linux VM):** Flutter `3.44.4` is installed at `~/flutter` and is on `PATH` via `~/.bashrc`. Non-interactive shells may not source `~/.bashrc`, so use the absolute binary `~/flutter/bin/flutter` when a command can't find `flutter`. The server uses pnpm `11.8.0` via corepack (plain `npm install` is blocked by a preinstall guard); Node is 22.x. -- **Server (`server/`) runs fully on Linux.** Lint = `pnpm typecheck` (there is no ESLint). `pnpm test`, `pnpm build`, and `pnpm dev`/`pnpm start` all work headless. -- **App (`app/`) has no Linux GUI target** (iOS-first, plus macOS desktop / Android — all needing macOS or a device). On this VM only `flutter analyze --no-pub` (lint) and `flutter test --no-pub` are runnable; `flutter run` and the `app/tool/e2e.sh` simulator flows cannot run here. -- **Keyless end-to-end server loop:** `pnpm exec tsx test/e2e-server.ts --mode stub --project ` starts the WSS server on port `9787` with the in-process `StubAdapter` (deterministic echo/STREAM/THINK replies — no LLM key, no `pi` binary) and seeds a paired device with bearer `e2e-token`. Drive it with any WSS client (`{t:"hello",bearer}` → `sub` → `send.message`). The real `pi`/`codex`/`claude` adapters need external agent binaries/API keys that are not present on the VM. -- **Harmless startup noise:** the server prints `/bin/sh: 1: tailscale: not found` and falls back to a loopback-only listener — expected on the VM (no Tailscale). +- Never leave a verified bug unfixed. + Fix a confirmed bug even when it sits outside the current diff or task. + If a fix is unsafe or too large right now, say so explicitly. + Do not move on in silence. diff --git a/README.md b/README.md index 818b4225..ae84e5aa 100644 --- a/README.md +++ b/README.md @@ -35,11 +35,30 @@ _▶️ Demo video coming soon — see [`docs/media/`](./docs/media/) to add it. trust store needed. - 🔔 **Never miss a prompt.** Get notified when an agent is waiting on you (approval, a question, or a finished turn). +- ⚡ **Light on both ends.** A native client and a small Node server, built to + stay quick and low on memory — your laptop keeps its battery and its fans. 📱 [`app/`](./app/) (Flutter client) · 🖥 [`server/`](./server/) (Node/TS server) · 📚 [UX](./docs/UX.md) · [Architecture](./docs/ARCHITECTURE.md) · [Development runbook](./docs/DEVELOPMENT.md) · [Notifications](./docs/NOTIFICATIONS.md) +## Where it came from + +I like terminal-first tools. [cmux](https://github.com/manaflow-ai/cmux) and +[herdr](https://herdr.dev) are a joy on a desktop. But when I sat on the couch +and drove my desktop through a terminal on my phone, it hurt: a tiny keyboard, +small text, and panes that expect a mouse and a wide screen. A terminal is the +wrong shape for a phone on the go. (I have not tried the SSH clients yet — they +may well be better than I expect.) + +So makit is not a terminal on a phone. It is a phone-shaped client for the +agent that already runs on your desktop. + +It does not beat the tools that inspired it. Orca, Cursor, herdr, cmux, +Superconductor, Conductor, and t3code are all excellent, and makit is not on +par with them. It is my own take: the parts that work for me, in the way I like +to work. Thanks to all of them for the ideas. + ## Quick start — Mac + iPhone over Tailscale makit is **private by default**: it binds to your [Tailscale](https://tailscale.com)