Skip to content

docs: fill the empty competitor row in the landscape map - #427

Merged
mohabbis merged 2 commits into
masterfrom
claude/ghost-positioning-scope-xpxgnh
Aug 30, 2026
Merged

docs: fill the empty competitor row in the landscape map#427
mohabbis merged 2 commits into
masterfrom
claude/ghost-positioning-scope-xpxgnh

Conversation

@mohabbis

Copy link
Copy Markdown
Owner

Summary

docs/competitive-landscape.md recorded Ghost's own category as "Governed execution / trust runtime — (no named direct competitor yet)". That line was wrong, and wrong in the expensive direction: it let the strategy treat an unexamined category as an empty one, while the doc spent 120 lines analysing Littlebird — a product in a different category selling to a different buyer.

This fills the row. There is a head-on competitor, and the layer below Ghost has started shipping the thing Ghost sells.

Trust & safety

Documentation only. No code, no commands, no schema.

  • Touches files / filesystem mutation: none
  • Touches OS input (keyboard/pointer capture or replay): none
  • Touches screenshots / screen contents: none
  • Touches network: none (research was read-only web search; no code makes new calls)
  • Touches authentication / secrets: none
  • Touches app / window state: none

The mutating-operation checklist does not apply — no execution path changed.

Changes

docs/competitive-landscape.md — map table rewritten, four new sections:

  • Skyvern — the head-on competitor. Open-source AI browser automation, YC-backed, 22.9k GitHub stars, AGPL-3.0 — the same licence as Ghost. Reported free / $29 / $149 / Enterprise tiers, with SOC 2 Type II, HIPAA and "human-in-the-loop for compliance-sensitive steps" on Enterprise. Reported named customers include Pilot (bookkeeping) and Legion Health (healthcare admin) — two of the four verticals in product-direction.md. Includes a capability matrix; Ghost wins three rows, all variations of the same one.
  • The commoditisation vector. Browser Use (SOC 2 Type II since Oct 2025, free tier, ~$24/mo) and Cloudflare Browser Run, which added human-in-the-loop in early 2026 — approval gating shipping as a platform primitive below Ghost's layer. Records explicitly what survives that and what does not.
  • HumanLayer — the cautionary tale. Launched as approval-gate infrastructure (YC F24, 11k+ stars), then left the category for coding-agent orchestration. Both readings recorded: the comfortable one (approval-as-a-library is not a company — which is Ghost's own argument for executing rather than only gating) and the uncomfortable one.
  • AI governance platforms. Fiddler / Credo AI / OneTrust / ModelOp placed as adjacent-above, with the note that they are defining the buyer's vocabulary, and that EU AI Act Art. 14 and NIST AI RMF demonstrable-oversight requirements point almost exactly at Ghost's deterministic gate — currently the best unused asset in the positioning.

Two consequences recorded in the same doc:

  • The AGPL objection is parked. Skyvern is AGPL-3.0, holds SOC 2 Type II and HIPAA, and sells to regulated buyers. The licence is demonstrably not what blocks this category. Ghost is additionally sole-copyright-holder, so dual-licensing stays available.
  • Adopt-list re-ranked. It had been ordered against Littlebird. Re-ranked against Skyvern: SOC 2 first, then apiCall/sendEmail (still in UNIMPLEMENTED_ACTION_TYPES while Skyvern ships HTTP and email blocks), then one self-serve path that completes, then the notification surface.

docs/product-direction.md — new Competitive position section; competitive-landscape.md added to the authoritative docs list.

docs/business-model.md — the "Trust runtime" moat bullet is qualified down to the part that survives commoditisation: a deterministic non-model gate over a typed schema, plus a tamper-evident chain.

Validation

Docs-only; no Rust or cloud code touched, so the Cargo checks are not applicable and were not run. The repo has no markdown linter in CI (.github/workflows/ is cloud / deploy-website / release / rust / security).

  • cargo fmt — N/A, no Rust changed
  • cargo check — N/A
  • cargo test — N/A
  • cargo clippy — N/A
  • Experimental leg — N/A
  • Anchor links in the new map table verified against the new heading slugs
  • Ghost-side factual claims checked against the tree (UNIMPLEMENTED_ACTION_TYPES, ICP list in product-direction.md, AGPL LICENSE, sole-contributor history)

Risks / follow-up

Sourcing is uneven and the doc says so inline. Only the Skyvern GitHub repository was reachable — licence, star count, feature list, self-hosting and integrations are quoted from it directly. skyvern.com (pricing, SOC 2 blog) and the HumanLayer YC launch page are blocked by this environment's egress proxy, so pricing tiers, certifications, user counts and customer names come from search summaries and are marked secondary-source in the doc, following the convention the Littlebird section already uses. Re-verify before any of this reaches a pitch, a comparison page, or a roadmap commitment.

Specific items to re-verify against the vendor:

  • Skyvern's Enterprise HITL: whether the approval is deterministic or model-mediated. The whole differentiation argument rests on this and it could not be confirmed from the repo.
  • Whether Skyvern's audit trail is tamper-evident or only written. Assumed not, on absence of evidence, which is weak grounds.
  • HumanLayer funding figures in aggregators (~$500K) are inconsistent with a standard YC deal; the doc flags this and does not rely on it.

Not addressed here (out of scope for this PR, still open):

  • SOC 2 Type II — now the top-ranked item in the adopt list, and a procurement blocker for the stated ICP.
  • apiCall / sendEmail remain unimplemented; the "APIs first, then browser" ordering in the strategy still describes intent, not shipped behaviour.
  • No self-serve path that completes.
  • The ~68k-line legacy Rust/Tauri tree (untouched since 2026-08-03) still reads as indecision to anyone evaluating the repo.

Generated by Claude Code

`competitive-landscape.md` recorded Ghost's own category as "governed
execution / trust runtime — (no named direct competitor yet)". That was
wrong, and it let the strategy treat an unexamined category as an empty one.

Adds analysis of:

- **Skyvern** — head-on. AGPL-3.0 (same licence as Ghost), 22.9k stars,
  YC-backed, reported SOC 2 Type II + HIPAA, free/$29/$149/Enterprise
  tiers, human-in-the-loop as an Enterprise feature, and named customers
  in bookkeeping and healthcare admin — two of Ghost's four stated
  verticals. Includes a capability matrix; Ghost wins three rows.
- **The commoditisation vector** — Browser Use (SOC 2 Type II since
  Oct 2025) and Cloudflare Browser Run shipping HITL as a platform
  primitive below Ghost's layer.
- **HumanLayer** — launched as approval-gate infrastructure, then left the
  category for coding-agent orchestration. Recorded with both the
  comfortable reading and the uncomfortable one.
- **AI governance platforms** — adjacent above, but they are defining the
  buyer's vocabulary, and EU AI Act Art. 14 / NIST AI RMF demonstrable-
  oversight requirements point at Ghost's architecture.

Consequences recorded:

- The AGPL objection is parked: Skyvern is AGPL and sells to regulated
  enterprise buyers, so the licence is not the constraint.
- Adopt-list re-ranked. It was ordered against Littlebird, a different
  category and buyer; SOC 2, `apiCall`/`sendEmail`, and a completing
  self-serve path now lead.
- `product-direction.md` gains a Competitive position section; the
  business-model moat claim is qualified to the part that survives
  commoditisation.

Sourcing: only the Skyvern GitHub repo was reachable; skyvern.com and the
YC launch page are egress-blocked, so pricing, certifications and customer
counts are marked secondary-source in the doc.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KbeBQct3tv2UfY2q5ZvqkN
@vercel

vercel Bot commented Aug 30, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
ghost Ready Ready Preview Aug 30, 2026 4:54am

Request Review

`Dependency Audit` (security.yml) has been red on master since
2026-08-23, including the scheduled run on 85be6c1 — the base commit of
this branch. Last green was 2026-08-16, which brackets the advisory's
publication date. The failure predates this branch and is unrelated to
its docs-only diff; this ports the fix rather than waiting on it.

    RUSTSEC-2026-0258  h2 0.4.15  "h2 unbounded empty DATA frames"
                       published 2026-08-17 · fix: >= 0.4.16
    denied warning     chacha20 0.10.1 yanked

Lockfile only, via `cargo update -p h2 -p chacha20`:

    chacha20  0.10.1 -> 0.10.2
    h2        0.4.15 -> 0.4.19

Remaining hunks are transitive windows-sys churn; no manifest or source
change. No-ops once master carries the same bump.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KbeBQct3tv2UfY2q5ZvqkN
@mohabbis

Copy link
Copy Markdown
Owner Author

Dependency Audit was red — pre-existing on master, fix ported

The failure, on 464b92e:

RUSTSEC-2026-0258  h2 0.4.15   "h2 unbounded empty DATA frames"
                   published 2026-08-17 · Solution: upgrade to >= 0.4.16
denied warning     chacha20 0.10.1  yanked

Both are in src-tauri/Cargo.lock — the legacy desktop tree. This PR's first commit changed three Markdown files under docs/.

Why it is not this PR's. security.yml on master has failed on every run since 2026-08-23, a week before this branch existed:

Run Branch Head Result
2026-08-30 04:27Z (schedule) master 85be6c15 — this PR's base failure
2026-08-25 17:44Z (push) master 85be6c15 failure
2026-08-23 01:35Z (schedule) master 61cecb37 failure
2026-08-16 01:28Z (schedule) master 61cecb37 success

The last green run predates the advisory's 2026-08-17 publication, and the scheduled run on this PR's exact base commit failed 20 minutes before the PR was opened.

Fix ported in 2f2e359 rather than waiting on it, since one exists and it is lockfile-only — cargo update -p h2 -p chacha20:

chacha20  0.10.1 -> 0.10.2   (un-yanked)
h2        0.4.15 -> 0.4.19   (>= 0.4.16, clears RUSTSEC-2026-0258)

Those are the only two package versions that move; the remaining hunks are transitive windows-sys churn. No manifest or source change. It no-ops once master carries the same bump, and it clears the same failure on master when this merges.

Consequence for this PR's CI: touching src-tauri/Cargo.lock takes it out of the rust.yml ignore set (^(cloud/|docs/|public/)|^\.github/workflows/cloud\.yml$|\.md$), so the full Check / Clippy / Test / Tauri-smoke matrix now runs on ubuntu, macOS and Windows instead of skipping. That is the intended validation for a dependency change.

What was not validated locally, and why. cargo check --all-targets cannot run in this environment: it fails in the gdk-sys build script with Package 'gdk-3.0' ... not found, before compiling any Ghost code. Installing the GTK/webkit deps that AGENTS.md lists failed too — the apt archives return 404 for libwebkit2gtk-4.1-dev, libjavascriptcoregtk-4.1-dev and their dependencies against this image's package indexes. So the compile signal for this bump is CI's, not mine. Both bumps are semver-patch within their existing minor versions and were resolved by cargo itself against the unchanged manifests.

Separately worth noting: this advisory sat red on the default branch for a week in a tree that has not been touched since 2026-08-03. Every PR opened in that window inherited a red check unrelated to its diff.


Generated by Claude Code

@mohabbis
mohabbis marked this pull request as ready for review August 30, 2026 18:23
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Aug 30, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-08-30T18:25:03.966638Z 2f2e359 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@mohabbis
mohabbis merged commit 039011d into master Aug 30, 2026
27 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants