Add product taxonomy spec; rename + align the Cloud Agent plan
Define the canonical product map (product-overview.md): sigit.si (Git hosting) and code.sigit.si (siGit Code universe); siGit Code (local agent), siGit Code Cloud (hosted chat, /cloud + /cloud/sessions), and siGit Code Cloud Agent (the autonomous, sandboxed task -> PR product to build). Reserve 'session' for chat and 'run' for the agent. Rename cloud-agent-plan.md -> sigit-code-cloud-agent-plan.md and align it: name is siGit Code Cloud Agent; Git-host agnostic (Git only, no SVN/Mercurial) behind a GitHostAdapter, sigit.si first then GitHub/GitLab; MVP trigger pinned. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Seto Elkahfi committed
Jun 26, 2026 at 19:44 UTC
ea51a7c398e6658144a46863aaa2bd08f37869f0
2 files changed
+156
-22
docs/product/product-overview.md
+116
new file mode 100644
index 0000000..51ce2af
--- /dev/null
+++ b/docs/product/product-overview.md
@@ -0,0 +1,116 @@
+# siGit product overview and taxonomy
+
+Status: spec v1 (2026-06-26). Audience: internal (private repo). This is the
+canonical map of what we sell and what the words mean. Every other spec defers to
+the names defined here.
+
+---
+
+## 1. The two domains
+
+| Domain | What it is |
+|---|---|
+| **sigit.si** | **Git hosting for the AI era.** The forge: repositories, branches, commits, and over time pull requests, issues, and the source-control surface that AI-native workflows run on. |
+| **code.sigit.si** | **The universe of siGit Code**, the coding agent. Home for the agent and its hosted products. |
+
+Keep them distinct: sigit.si hosts the code; code.sigit.si is where the agent
+lives and where the hosted offerings are sold.
+
+---
+
+## 2. siGit Code (the agent)
+
+**siGit Code** is a **natively local-inference coding agent** (the Rust CLI / ACP
+agent). On-device by default: the model runs on the user's machine, the agent
+works against local repos, nothing is sent to a server unless the user chooses a
+hosted product.
+
+Because it is local-first, the **root of code.sigit.si (`/`)** is the
+**on-device dashboard**: telemetry of the user's **local** siGit Code sessions,
+shown only if the user opts in to enable it. Nothing leaves the machine.
+
+---
+
+## 3. The hosted products on code.sigit.si
+
+Two products sit on top of siGit Code. They mirror the two ways GitHub Copilot is
+sold (interactive chat vs. autonomous coding agent), but the engine in both is
+siGit Code, which we already ship.
+
+### 3.1 siGit Code Cloud — hosted chat (BUILT)
+
+**siGit Code Cloud** is the **hosted, non-on-device chat**: an interactive
+assistant powered by hosted inference instead of the local model. The user signs
+in, picks a quality tier, and chats. Conversations are saved.
+
+- **Surfaces:** `/cloud` (the chat) and `/cloud/sessions`, `/cloud/sessions/<uuid>`
+ (saved chat history). **Both are part of siGit Code Cloud.**
+- **Unit of work:** a **session** = one saved chat conversation.
+- **Compute:** hosted inference only (Onde Cloud, via `/api/v1/chat/completions`).
+- **Copilot analog:** Copilot Chat.
+- **Status:** shipped and live at code.sigit.si.
+
+### 3.2 siGit Code Cloud Agent — autonomous agent (TO BUILD)
+
+**siGit Code Cloud Agent** is **autonomous, sandboxed siGit Code that solves an
+issue or task in a Git repository and opens a pull request**, working in the
+background like a human developer. The user delegates a task and walks away; the
+agent works on its own and comes back with a PR to review.
+
+- **Engine:** siGit Code, run headless in an ephemeral **sandbox** (AWS), with
+ hosted inference. The agent clones the repo, edits, runs build/test, iterates,
+ pushes a branch.
+- **Repo target:** **sigit.si first**, then **GitHub, GitLab, and other Git
+ hosts** in the future. Scope is **Git only** (no SVN, Mercurial, or other version
+ control systems). The agent is **Git-host agnostic** behind a Git-host adapter:
+ sigit.si is the first host, not the only one.
+- **Output:** a **pull request** on the target Git host (a pushed branch + review
+ surface) for a human to review and merge. The agent never auto-merges.
+- **Unit of work:** an **agent run** (one delegated task → autonomous work → PR).
+- **Copilot analog:** Copilot coding agent (the cloud agent).
+- **Status:** planning. See [sigit-code-cloud-agent-plan.md](sigit-code-cloud-agent-plan.md).
+
+---
+
+## 4. Naming rules (to stop the collisions)
+
+These words are load-bearing. Use them exactly.
+
+- **siGit Code** — the local-inference coding agent. The engine.
+- **siGit Code Cloud** — the hosted **chat** product. `/cloud` + `/cloud/sessions`.
+- **siGit Code Cloud Agent** — the autonomous **agent** product (task → PR).
+- **session** — a siGit Code Cloud **chat** conversation. It belongs to siGit Code
+ Cloud. Do **not** use "session(s)" to mean the agent or its runs.
+- **agent run** — one siGit Code Cloud Agent task. Use "run" (or "task"), never
+ "session," for the agent.
+- **on-device dashboard** — the local telemetry at `/` (opt-in).
+
+So: the thing at `/cloud/sessions` is **chat sessions** (siGit Code Cloud). The
+autonomous product is the **Agent**, and its work items are **runs**, on their own
+surface (anchored to a repo, since a run operates on one repository).
+
+---
+
+## 5. Information architecture (code.sigit.si)
+
+| Path | Product | Notes |
+|---|---|---|
+| `/` | on-device dashboard | local session telemetry, opt-in |
+| `/cloud` | siGit Code Cloud | the hosted chat |
+| `/cloud/sessions`, `/cloud/sessions/<uuid>` | siGit Code Cloud | saved chat history + detail |
+| `/billing` | account | plan / billing |
+| _(future)_ agent surface | siGit Code Cloud Agent | run-a-task and the list of agent runs; anchored to a repo (sigit.si first). Surface path TBD in the agent spec. |
+
+The current web app (`apps/code-cloud-web`) already implements rows 1 to 4. The
+Agent surface is new and specified separately.
+
+---
+
+## 6. Why this is a strong position
+
+GitHub had to build a coding agent to ship its cloud agent. **siGit already ships
+the agent (siGit Code) and the git host (sigit.si).** siGit Code Cloud Agent is
+mostly: take the agent we already have, run it headless in a sandbox against a
+repo we already host, and open a PR. The one genuinely new system is the sandbox.
+The Git-host-agnostic design means the same agent later runs against GitHub and
+GitLab repos, not just sigit.si (Git only; not SVN, Mercurial, or other VCS).
docs/product/sigit-code-cloud-agent-plan.md
+40
-22
similarity index 88%
rename from docs/product/cloud-agent-plan.md
rename to docs/product/sigit-code-cloud-agent-plan.md
index fb8c6bd..6b79d71 100644
--- a/docs/product/cloud-agent-plan.md
+++ b/docs/product/sigit-code-cloud-agent-plan.md
@@ -1,31 +1,44 @@
-# siGit Cloud Agent — product plan and roadmap
+# siGit Code Cloud Agent — product plan and roadmap
-Status: draft v1 (2026-06-26). Owner: product/eng. Audience: internal (private repo).
+Status: draft v2 (2026-06-26). Owner: product/eng. Audience: internal (private repo).
+Naming and scope per [product-overview.md](product-overview.md); this is the
+detailed spec for the **siGit Code Cloud Agent** product defined there.
-A GitHub-Copilot-coding-agent-style product built into sigit.si and siGit Code
-Cloud: you give it a task against a repo you host on sigit.si, an isolated AWS
-sandbox runs the siGit Code agent loop against that repo, and it returns a branch
-plus a proposed pull request. This document is the strategy, the architecture, and
-the phased roadmap.
+A GitHub-Copilot-coding-agent-style product: you delegate a task against a Git
+repository, an isolated AWS sandbox runs siGit Code autonomously against that repo,
+and it returns a branch plus a proposed pull request. The first repo target is
+**sigit.si**; the agent is **Git-host agnostic** behind a Git-host adapter so the
+same agent later runs against **GitHub, GitLab, and other Git hosts**. Scope is
+**Git only** (no SVN, Mercurial, or other version control systems). This document
+is the strategy, the architecture, and the phased roadmap.
---
## 1. What we are building (and what it is not)
-**siGit Cloud Agent** is an asynchronous, server-side coding agent. The user
-describes a task ("add pagination to the repos list", "fix the failing
-auth test", "upgrade Rails to 8.1"), points it at one of their sigit.si repos and
-a base branch, and walks away. The platform provisions an ephemeral AWS sandbox,
-clones the repo into it, runs siGit Code headless against the task with cloud
-inference, lets it edit files and run build/test commands, then pushes a head
-branch back to sigit.si and opens a pull request for human review.
+**siGit Code Cloud Agent** is an asynchronous, server-side coding agent. The user
+delegates a task or issue ("add pagination to the repos list", "fix the failing
+auth test", "upgrade Rails to 8.1"), points it at one of their repos and a base
+branch, and walks away. The platform provisions an ephemeral AWS sandbox, clones
+the repo into it, runs siGit Code headless against the task with hosted inference,
+lets it edit files and run build/test commands, then pushes a head branch and
+opens a pull request for human review.
-It is the cloud, autonomous sibling of the two things siGit already ships:
+It is the autonomous sibling of the other two things siGit ships (see
+[product-overview.md](product-overview.md)):
-- **siGit Code** (public Rust CLI / ACP agent) runs *locally / on the desktop*,
+- **siGit Code** (Rust CLI / ACP agent) runs *locally / on the desktop*,
interactively, driven by the developer at their keyboard.
-- **siGit Cloud Agent** runs *in our cloud*, asynchronously, driven by a task and
- reviewed afterward through a PR.
+- **siGit Code Cloud** is the *hosted chat* (interactive, synchronous). Its work
+ unit is a chat **session**.
+- **siGit Code Cloud Agent** runs *in our cloud*, asynchronously, driven by a task
+ and reviewed afterward through a PR. Its work unit is an agent **run** (never a
+ "session", which belongs to the chat product).
+
+**MVP trigger (decided):** from a repo on sigit.si, the user describes a task and
+the agent produces a PR. Formal issue-assignment (assign a tracked issue to the
+agent, the Copilot headline flow) is a fast-follow that depends on an Issues
+feature, and on the Git-host adapters for GitHub/GitLab issues.
Reference points in the market: GitHub Copilot coding agent (assign an issue, it
opens a PR), OpenAI Codex cloud, Cursor background agents, Devin. The
@@ -292,7 +305,7 @@ Agent runs are an included monthly bundle per plan, with overage or an add-on fo
heavy use. Suggested `Subscription` constant shape:
```ruby
-# Included siGit Cloud Agent runs per billing period. Tunable pricing knob.
+# Included siGit Code Cloud Agent runs per billing period. Tunable pricing knob.
AGENT_RUNS = { "pro" => [FILL], "team" => [FILL] }.freeze # e.g. pro 20, team 75
TRIAL_AGENT_RUNS = [FILL] # e.g. 2
AGENT_OVERAGE_PER_RUN = [FILL] # $/run past the bundle
@@ -402,9 +415,14 @@ with a demoable, dogfoodable increment.
pricing flies blind.
- **No AWS SDK in the app yet.** Adds a new infra dependency and IAM/VPC footprint
to own and secure.
-- **Naming.** "siGit Cloud Agent" is a working name; align with the existing
- brand rules (`siGit Code`, `siGit Code Cloud`, `Onde Cloud`) before anything
- ships to users.
+- **Naming (resolved).** The product is **siGit Code Cloud Agent** (see
+ [product-overview.md](product-overview.md)). "session" is reserved for siGit Code
+ Cloud chat; the agent's work unit is a **run**. Do not name the agent or its runs
+ "sessions".
+- **Git-host scope.** Git only (no SVN, Mercurial, or other VCS). sigit.si is the
+ first Git host, not the only one. Keep the git clone / branch-push / PR-open
+ behind a `GitHostAdapter` seam from day one (sigit.si now; GitHub, GitLab, other
+ Git hosts later) so the agent is not welded to our own forge.
---