@yiaany/ghostapi 0.1.9 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (292) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/CONTRIBUTING.md +132 -119
  3. package/LICENSE +21 -21
  4. package/PROVENANCE.md +13 -0
  5. package/README.md +78 -84
  6. package/SECURITY.md +56 -53
  7. package/dist/actions/gateway.js +320 -72
  8. package/dist/actions/gateway.js.map +1 -1
  9. package/dist/actions/index.d.ts +2 -2
  10. package/dist/actions/index.js +1 -1
  11. package/dist/actions/index.js.map +1 -1
  12. package/dist/agents/agentPrompt.js +7 -5
  13. package/dist/agents/agentPrompt.js.map +1 -1
  14. package/dist/ai/aiClient.js +5 -5
  15. package/dist/ai/aiClient.js.map +1 -1
  16. package/dist/ai/aiGenerator.js +66 -26
  17. package/dist/ai/aiGenerator.js.map +1 -1
  18. package/dist/ai/genericInference.js +151 -36
  19. package/dist/ai/genericInference.js.map +1 -1
  20. package/dist/ai/prompts.js +55 -49
  21. package/dist/ai/prompts.js.map +1 -1
  22. package/dist/approvals/approvalInbox.js +649 -133
  23. package/dist/approvals/approvalInbox.js.map +1 -1
  24. package/dist/approvals/index.d.ts +2 -2
  25. package/dist/approvals/index.js +1 -1
  26. package/dist/approvals/index.js.map +1 -1
  27. package/dist/behavior/behaviorStore.js +34 -14
  28. package/dist/behavior/behaviorStore.js.map +1 -1
  29. package/dist/cache/index.js +14 -5
  30. package/dist/cache/index.js.map +1 -1
  31. package/dist/cli/index.js +226 -93
  32. package/dist/cli/index.js.map +1 -1
  33. package/dist/cli/openUrl.js +17 -3
  34. package/dist/cli/openUrl.js.map +1 -1
  35. package/dist/cli/parser.js +79 -18
  36. package/dist/cli/parser.js.map +1 -1
  37. package/dist/config/dataPaths.js +4 -2
  38. package/dist/config/dataPaths.js.map +1 -1
  39. package/dist/config/localConfig.js +5 -2
  40. package/dist/config/localConfig.js.map +1 -1
  41. package/dist/config/serverConfig.js +11 -5
  42. package/dist/config/serverConfig.js.map +1 -1
  43. package/dist/contracts/contract.js +311 -83
  44. package/dist/contracts/contract.js.map +1 -1
  45. package/dist/contracts/index.d.ts +2 -2
  46. package/dist/contracts/index.js +1 -1
  47. package/dist/contracts/index.js.map +1 -1
  48. package/dist/credentials/credentialBroker.js +391 -79
  49. package/dist/credentials/credentialBroker.js.map +1 -1
  50. package/dist/credentials/index.d.ts +2 -2
  51. package/dist/credentials/index.js +1 -1
  52. package/dist/credentials/index.js.map +1 -1
  53. package/dist/dashboard/app.js +823 -685
  54. package/dist/dashboard/dashboard.js.map +1 -1
  55. package/dist/dashboard/index.html +704 -267
  56. package/dist/dashboard/styles.css +1040 -349
  57. package/dist/egress/capabilities.js +55 -25
  58. package/dist/egress/capabilities.js.map +1 -1
  59. package/dist/egress/linuxBootstrap.js +47 -11
  60. package/dist/egress/linuxBootstrap.js.map +1 -1
  61. package/dist/egress/run.js +170 -31
  62. package/dist/egress/run.js.map +1 -1
  63. package/dist/errors/errorEngine.js +15 -3
  64. package/dist/errors/errorEngine.js.map +1 -1
  65. package/dist/errors/providerErrors.js.map +1 -1
  66. package/dist/evals/evals.js +304 -78
  67. package/dist/evals/evals.js.map +1 -1
  68. package/dist/evals/index.d.ts +2 -2
  69. package/dist/evals/index.js +1 -1
  70. package/dist/evals/index.js.map +1 -1
  71. package/dist/evidence/index.d.ts +2 -2
  72. package/dist/evidence/index.js +1 -1
  73. package/dist/evidence/index.js.map +1 -1
  74. package/dist/evidence/report.d.ts +1 -1
  75. package/dist/evidence/report.js +263 -79
  76. package/dist/evidence/report.js.map +1 -1
  77. package/dist/fault/faultLab.js +24 -9
  78. package/dist/fault/faultLab.js.map +1 -1
  79. package/dist/index.d.ts +42 -42
  80. package/dist/index.js +21 -21
  81. package/dist/index.js.map +1 -1
  82. package/dist/inventory/analysis.d.ts +1 -1
  83. package/dist/inventory/analysis.js +174 -50
  84. package/dist/inventory/analysis.js.map +1 -1
  85. package/dist/inventory/index.d.ts +4 -4
  86. package/dist/inventory/index.js +3 -3
  87. package/dist/inventory/index.js.map +1 -1
  88. package/dist/inventory/inventoryController.js +362 -115
  89. package/dist/inventory/inventoryController.js.map +1 -1
  90. package/dist/inventory/types.js +680 -140
  91. package/dist/inventory/types.js.map +1 -1
  92. package/dist/ledger/actionLedger.js +355 -78
  93. package/dist/ledger/actionLedger.js.map +1 -1
  94. package/dist/ledger/index.d.ts +2 -2
  95. package/dist/ledger/index.js +1 -1
  96. package/dist/ledger/index.js.map +1 -1
  97. package/dist/mcp/server.js +26 -11
  98. package/dist/mcp/server.js.map +1 -1
  99. package/dist/policy/index.d.ts +2 -2
  100. package/dist/policy/index.js +1 -1
  101. package/dist/policy/index.js.map +1 -1
  102. package/dist/policy/policy.js +112 -32
  103. package/dist/policy/policy.js.map +1 -1
  104. package/dist/productTelemetry/index.js +71 -20
  105. package/dist/productTelemetry/index.js.map +1 -1
  106. package/dist/providers/conformance.js +10 -5
  107. package/dist/providers/conformance.js.map +1 -1
  108. package/dist/providers/discord.js +2 -2
  109. package/dist/providers/generic.js +3 -3
  110. package/dist/providers/github.js +2 -2
  111. package/dist/providers/index.d.ts +3 -3
  112. package/dist/providers/index.js +2 -2
  113. package/dist/providers/index.js.map +1 -1
  114. package/dist/providers/openai.js +3 -3
  115. package/dist/providers/packs/resendPack.js +51 -25
  116. package/dist/providers/packs/resendPack.js.map +1 -1
  117. package/dist/providers/packs/stripePack.js +590 -121
  118. package/dist/providers/packs/stripePack.js.map +1 -1
  119. package/dist/providers/registry.js +4 -4
  120. package/dist/providers/registry.js.map +1 -1
  121. package/dist/providers/runtime.js +7 -6
  122. package/dist/providers/runtime.js.map +1 -1
  123. package/dist/providers/stripeWebhook.js +39 -10
  124. package/dist/providers/stripeWebhook.js.map +1 -1
  125. package/dist/providers/twilio.js +2 -2
  126. package/dist/proxy/cacheKey.js +9 -2
  127. package/dist/proxy/cacheKey.js.map +1 -1
  128. package/dist/proxy/providerDetector.js +22 -9
  129. package/dist/proxy/providerDetector.js.map +1 -1
  130. package/dist/proxy/proxyHandler.js +57 -22
  131. package/dist/proxy/proxyHandler.js.map +1 -1
  132. package/dist/proxy/requestNormalizer.js +4 -2
  133. package/dist/proxy/requestNormalizer.js.map +1 -1
  134. package/dist/reliability/costGovernance.js +211 -49
  135. package/dist/reliability/costGovernance.js.map +1 -1
  136. package/dist/reliability/index.d.ts +8 -8
  137. package/dist/reliability/index.js +4 -4
  138. package/dist/reliability/index.js.map +1 -1
  139. package/dist/reliability/reconciliation.js +274 -65
  140. package/dist/reliability/reconciliation.js.map +1 -1
  141. package/dist/reliability/runtimeHealth.js +127 -35
  142. package/dist/reliability/runtimeHealth.js.map +1 -1
  143. package/dist/reliability/slo.js +257 -50
  144. package/dist/reliability/slo.js.map +1 -1
  145. package/dist/report/safetyReport.d.ts +6 -0
  146. package/dist/report/safetyReport.js +56 -12
  147. package/dist/report/safetyReport.js.map +1 -1
  148. package/dist/rules/aiRules.js +5 -5
  149. package/dist/rules/aiRules.js.map +1 -1
  150. package/dist/safety/index.d.ts +2 -2
  151. package/dist/safety/index.js +1 -1
  152. package/dist/safety/index.js.map +1 -1
  153. package/dist/safety/safetyController.js +675 -165
  154. package/dist/safety/safetyController.js.map +1 -1
  155. package/dist/scenarios/scenarioBundle.js +204 -71
  156. package/dist/scenarios/scenarioBundle.js.map +1 -1
  157. package/dist/scenarios/scenarioStore.js +88 -29
  158. package/dist/scenarios/scenarioStore.js.map +1 -1
  159. package/dist/security/headerSanitizer.js +52 -10
  160. package/dist/security/headerSanitizer.js.map +1 -1
  161. package/dist/security/secrets.js +10 -5
  162. package/dist/security/secrets.js.map +1 -1
  163. package/dist/server/accessControl.js +37 -10
  164. package/dist/server/accessControl.js.map +1 -1
  165. package/dist/server/createServer.js +1 -1
  166. package/dist/server/createServer.js.map +1 -1
  167. package/dist/server/eventsStore.js +15 -5
  168. package/dist/server/eventsStore.js.map +1 -1
  169. package/dist/server/routes.js +61 -19
  170. package/dist/server/routes.js.map +1 -1
  171. package/dist/server/sse.js +1 -1
  172. package/dist/server/sse.js.map +1 -1
  173. package/dist/setup/sdkDetector.js +7 -2
  174. package/dist/setup/sdkDetector.js.map +1 -1
  175. package/dist/setup/setupGenerator.js +136 -48
  176. package/dist/setup/setupGenerator.js.map +1 -1
  177. package/dist/state/stateExtractor.js +3 -1
  178. package/dist/state/stateExtractor.js.map +1 -1
  179. package/dist/state/stateResolver.js +10 -7
  180. package/dist/state/stateResolver.js.map +1 -1
  181. package/dist/state/stateStore.js +13 -4
  182. package/dist/state/stateStore.js.map +1 -1
  183. package/dist/storage/fileStore.js +12 -4
  184. package/dist/storage/fileStore.js.map +1 -1
  185. package/dist/teamControl/controlPlane.js +846 -174
  186. package/dist/teamControl/controlPlane.js.map +1 -1
  187. package/dist/teamControl/deployment.js +19 -5
  188. package/dist/teamControl/deployment.js.map +1 -1
  189. package/dist/teamControl/index.d.ts +4 -4
  190. package/dist/teamControl/index.js +2 -2
  191. package/dist/teamControl/index.js.map +1 -1
  192. package/dist/tests/testGenerator.js +15 -7
  193. package/dist/tests/testGenerator.js.map +1 -1
  194. package/dist/trust/index.d.ts +2 -2
  195. package/dist/trust/index.js +1 -1
  196. package/dist/trust/index.js.map +1 -1
  197. package/dist/trust/trustLadder.js +309 -63
  198. package/dist/trust/trustLadder.js.map +1 -1
  199. package/dist/worlds/index.d.ts +2 -2
  200. package/dist/worlds/index.js +1 -1
  201. package/dist/worlds/index.js.map +1 -1
  202. package/dist/worlds/worlds.js +364 -65
  203. package/dist/worlds/worlds.js.map +1 -1
  204. package/docs/assets/dashboard.png +0 -0
  205. package/docs/ci.md +49 -49
  206. package/docs/github-actions.md +84 -84
  207. package/docs/mcp.md +58 -52
  208. package/docs/policy.md +63 -61
  209. package/docs/providers/authoring-packs.md +180 -175
  210. package/docs/providers/stripe-core-pack.md +84 -82
  211. package/docs/releases/README.md +13 -0
  212. package/docs/security/action-gateway-threat-model.md +34 -34
  213. package/docs/security/action-ledger-incident-replay-threat-model.md +42 -42
  214. package/docs/security/approval-inbox-threat-model.md +35 -35
  215. package/docs/security/credential-broker-threat-model.md +52 -52
  216. package/docs/security/egress-threat-model.md +126 -126
  217. package/docs/security/inventory-threat-model.md +104 -104
  218. package/docs/security/kill-switch-budgets-threat-model.md +37 -37
  219. package/docs/security/reliability-threat-model.md +111 -111
  220. package/docs/security/trust-ladder-threat-model.md +33 -33
  221. package/docs/telemetry.md +14 -0
  222. package/docs/usage.md +680 -571
  223. package/examples/README.md +10 -10
  224. package/examples/agent-instructions/README.md +39 -39
  225. package/examples/ci-smoke/README.md +21 -21
  226. package/examples/ci-smoke/ghostapi.policy.yaml +22 -22
  227. package/examples/ci-smoke/package.json +9 -9
  228. package/examples/ci-smoke/production-egress.mjs +4 -2
  229. package/examples/ci-smoke/safe.mjs +21 -17
  230. package/examples/evals/README.md +24 -24
  231. package/examples/evals/retry-after.eval.json +71 -52
  232. package/examples/generic-rest/README.md +27 -27
  233. package/examples/github-fetch/README.md +38 -35
  234. package/examples/openai-streaming/README.md +16 -16
  235. package/examples/openai-streaming/streaming-tool-call.mjs +44 -31
  236. package/examples/policy/ghostapi.policy.yaml +27 -27
  237. package/examples/record-replay/README.md +19 -19
  238. package/examples/record-replay/replay-requests.json +22 -22
  239. package/examples/record-replay/stripe-checkout.har.json +30 -30
  240. package/examples/resend-node/README.md +22 -22
  241. package/examples/stripe-node/README.md +35 -35
  242. package/examples/stripe-node/checkout-flow.mjs +87 -61
  243. package/examples/twilio-node/README.md +21 -21
  244. package/examples/worlds/README.md +19 -19
  245. package/examples/worlds/subscription-recovery.mjs +21 -12
  246. package/package.json +28 -6
  247. package/dist/landing/assets/index-BXR41fAD.css +0 -1
  248. package/dist/landing/assets/index-CxWsopzP.css +0 -1
  249. package/dist/landing/assets/index-D8_ggMRE.js +0 -55
  250. package/dist/landing/assets/index-DZlpyhqd.js +0 -55
  251. package/dist/landing/assets/index-Dk-Xezs3.js +0 -55
  252. package/dist/landing/index.html +0 -15
  253. package/dist/landing/landing.d.ts +0 -3
  254. package/dist/landing/landing.js +0 -12
  255. package/dist/landing/landing.js.map +0 -1
  256. package/docs/commercial/README.md +0 -29
  257. package/docs/commercial/data-inventory.md +0 -36
  258. package/docs/commercial/manual-invoicing.md +0 -44
  259. package/docs/commercial/metrics.md +0 -51
  260. package/docs/commercial/pricing.md +0 -103
  261. package/docs/commercial/privacy-policy-draft.md +0 -41
  262. package/docs/commercial/terms-topics-for-counsel.md +0 -51
  263. package/docs/design-partners/README.md +0 -52
  264. package/docs/design-partners/demo-narratives.md +0 -33
  265. package/docs/design-partners/design-partner-offer.md +0 -39
  266. package/docs/design-partners/discovery-questions.md +0 -28
  267. package/docs/design-partners/feedback-capture-template.md +0 -48
  268. package/docs/design-partners/icp-one-pager.md +0 -43
  269. package/docs/design-partners/onboarding-checklist.md +0 -33
  270. package/docs/design-partners/pilot-success-criteria.md +0 -27
  271. package/docs/design-partners/pricing-interview-script.md +0 -18
  272. package/docs/design-partners/telemetry-plan.md +0 -48
  273. package/docs/development/baseline.md +0 -114
  274. package/docs/development/onboarding-smoke.md +0 -37
  275. package/docs/development/verification-0.1.8.md +0 -25
  276. package/docs/enterprise-product-roadmap-ru.md +0 -1879
  277. package/docs/fundraising/README.md +0 -87
  278. package/docs/fundraising/data-room-checklist.md +0 -72
  279. package/docs/fundraising/demo-script.md +0 -52
  280. package/docs/fundraising/design-partners-50.md +0 -74
  281. package/docs/fundraising/launch-posts.md +0 -37
  282. package/docs/fundraising/metrics-and-evidence.md +0 -30
  283. package/docs/fundraising/roadmap-12-month.md +0 -25
  284. package/docs/fundraising/technical-due-diligence-index.md +0 -37
  285. package/docs/fundraising/yc-application.md +0 -25
  286. package/docs/hosted-pilot.md +0 -111
  287. package/docs/operations/disaster-recovery-runbook.md +0 -81
  288. package/docs/operations/kill-switch-runbook.md +0 -32
  289. package/docs/release-checklist.md +0 -83
  290. package/docs/release-migration-and-rollback.md +0 -63
  291. package/docs/release-readiness.md +0 -39
  292. package/docs/team-control-plane.md +0 -72
@@ -1,87 +0,0 @@
1
- # GhostAPI Launch And Fundraising Package
2
-
3
- **Status as of 2026-08-09:** This package describes a working local release candidate and a proposed customer-validation plan. It does not claim users, revenue, growth, customer quotes, customer outcomes, or a deployed hosted service. The evidence boundary is documented in [metrics-and-evidence.md](metrics-and-evidence.md).
4
-
5
- ## Category Claim
6
-
7
- > Safety and verification infrastructure for software built by AI agents.
8
-
9
- GhostAPI starts with a narrow, testable wedge: a local provider simulation runtime plus a Linux-only fail-closed egress boundary and sanitized CI evidence for AI-assisted integration code.
10
-
11
- ## One-Line Description
12
-
13
- GhostAPI helps teams test AI-authored integrations against safe local provider simulations and produce CI evidence that a supported run did not reach production.
14
-
15
- ## 50-Word Description
16
-
17
- GhostAPI is safety and verification infrastructure for software built by AI agents. It simulates selected third-party APIs locally, injects controlled failures, masks secret-shaped data, and on supported Linux hosts runs tests inside a loopback-only network namespace. It produces sanitized CI evidence so reviewers can assess integration behavior before merge.
18
-
19
- ## Problem And Solution
20
-
21
- AI coding agents can write and execute code that creates payments, sends messages, modifies repositories, or calls costly model APIs. A base-URL convention or hand-written mock does not stop a new HTTP client, direct IP call, or subprocess. Teams also need to test ambiguity: `429`, timeouts, duplicate delivery, retries, and idempotency.
22
-
23
- GhostAPI gives the integration code a local, provider-shaped test target. On compatible Linux hosts, `ghostapi run` starts the target in a fresh user, mount, network, and PID namespace with loopback only, or refuses to start. CI can then retain a bounded, redacted evidence artifact from the exact run. This is not a guarantee against a hostile host, same-user accessible UNIX control sockets, or every provider behavior.
24
-
25
- ## Why Now
26
-
27
- Coding agents are increasingly able to edit and run integration code in tight loops. That makes external side effects and flaky third-party dependencies part of the code-review surface, rather than a manual testing concern. Existing tools address pieces of the workflow: provider test environments, HTTP mocks, request interception, or CI artifacts. GhostAPI tests whether a combined safety boundary plus deterministic failure evidence is a valuable merge gate.
28
-
29
- This is a product hypothesis, not evidence of market demand. The repository has no validated customer interview, weekly CI user, paid pilot, or revenue record as of 2026-08-09.
30
-
31
- ## Market Framing
32
-
33
- GhostAPI is not positioned as "more mocks." It sits between:
34
-
35
- - Local API simulation and contract testing for integration development.
36
- - Agent evaluation and reliability testing for generated code.
37
- - CI policy evidence for teams that need to review external side-effect risk.
38
-
39
- The initial buyer hypothesis is a Platform Engineering, AppSec, Developer Productivity, or AI governance leader at a 10-200 engineer SaaS team with sensitive payments, communications, source-control, or model-provider integrations.
40
-
41
- ## Competitive Matrix
42
-
43
- This table compares published scopes reviewed on 2026-08-09. It is not a benchmark or a claim that competitors cannot build similar functions.
44
-
45
- | Category / primary source | Publicly documented focus | GhostAPI's narrow difference | Boundary |
46
- | --- | --- | --- | --- |
47
- | Stripe test mode and test clocks | Stripe provides test-mode APIs and test clocks for Stripe behavior. | GhostAPI runs a local Stripe-shaped pack and can combine it with local fault behavior and CI evidence. | GhostAPI does not claim live Stripe parity. |
48
- | WireMock | HTTP API mocking, stubbing, and simulation. | GhostAPI adds reviewed provider-shaped packs, MCP controls, and a Linux egress-run/evidence workflow. | WireMock is mature and configurable; GhostAPI must prove why this workflow matters. |
49
- | Mock Service Worker | Network-level request interception with handlers for tests and development. | GhostAPI is a standalone local provider runtime, not browser/app-process interception, and targets agent-controlled integration flows. | MSW remains a strong application-test choice. |
50
- | Postman | API development, testing, and collaboration around collections/APIs. | GhostAPI focuses on executing application/agent code safely in a local runtime and retaining run evidence. | It is not an API-client replacement. |
51
- | GitHub Actions artifacts and checks | CI status checks and artifact retention. | GhostAPI supplies an integration-specific, sanitized evidence artifact and policy result. | GitHub remains the CI platform; GhostAPI is a check within it. |
52
-
53
- Primary sources: [Stripe test mode](https://docs.stripe.com/test-mode), [Stripe test clocks](https://docs.stripe.com/billing/testing/test-clocks), [WireMock documentation](https://wiremock.org/docs/), [MSW documentation](https://mswjs.io/docs/), [Postman documentation](https://learning.postman.com/docs/), and [GitHub Actions artifacts](https://docs.github.com/actions/using-workflows/storing-workflow-data-as-artifacts). Recheck these links before external publication.
54
-
55
- ## Moat Thesis
56
-
57
- The potential moat is an evidence chain, not a single simulator: one typed workflow should eventually connect local simulation, sanitized record/replay, deterministic evals, CI policy checks, and bounded production-action controls. Provider compatibility fixtures, incident-derived regression scenarios, and deployment into merge gates could compound over time.
58
-
59
- This is a thesis, not a current moat. Today, GhostAPI has a local runtime, an early Stripe pack, policy/evidence/eval primitives, and an undeployed hosted-pilot skeleton. It has no demonstrated switching costs, network effects, customer data advantage, or production action gateway.
60
-
61
- ## Go-To-Market
62
-
63
- 1. Recruit five tightly qualified paid-pilot candidates, not a broad self-serve funnel.
64
- 2. Lead with one risk: AI-authored Stripe or webhook code running in CI without production credentials or egress proof.
65
- 3. Run a 30-minute discovery call, then offer a fixed-scope, 3-4 week validation pilot only if a buyer owns the risk.
66
- 4. Require one Linux CI workflow, one deterministic failure path, a named technical owner, and a closeout decision.
67
- 5. Publish useful OSS examples and a technical launch only after the exact release commit passes the pinned Linux CI workflow.
68
- 6. Use observed adoption, blocked workflows, and buyer decisions to decide whether shared CI evidence is worth hosted product work.
69
-
70
- ## Pricing Summary
71
-
72
- - **OSS Local:** available, MIT licensed, local-first, and free. It has no account, paywall, or hosted dependency.
73
- - **Team:** a proposed fixed-scope design-partner pilot, not a generally available plan. No public price is validated.
74
- - **Enterprise:** discovery only. No hosted deployment, SSO/SCIM, SLA, billing, or production-action service is available for purchase.
75
-
76
- See [commercial/pricing.md](../commercial/pricing.md) for the evidence-led pricing experiment and [commercial/manual-invoicing.md](../commercial/manual-invoicing.md) for the manual-pilot boundary.
77
-
78
- ## Package Index
79
-
80
- - [Metrics and evidence boundary](metrics-and-evidence.md)
81
- - [Three-minute technical demo](demo-script.md)
82
- - [Launch posts](launch-posts.md)
83
- - [YC-style application answers](yc-application.md)
84
- - [50 design-partner targets](design-partners-50.md)
85
- - [Data room checklist](data-room-checklist.md)
86
- - [12-month gated roadmap](roadmap-12-month.md)
87
- - [Technical due diligence index](technical-due-diligence-index.md)
@@ -1,72 +0,0 @@
1
- # Data Room Checklist
2
-
3
- Create this room only with founder and counsel review. Do not place provider secrets, raw traffic, production credentials, customer source code, personal data, or unredacted security incidents in it.
4
-
5
- ## Corporate
6
-
7
- - [ ] Certificate of incorporation or formation; jurisdiction and entity type.
8
- - [ ] Charter, bylaws, operating agreement, and board consents.
9
- - [ ] Cap table with fully diluted ownership, option pool, SAFEs/notes/warrants, and dates.
10
- - [ ] Founder stock purchase agreements and vesting/repurchase terms.
11
- - [ ] Founder, employee, and contractor IP/confidentiality assignment agreements.
12
- - [ ] Current officer/director list and any investor rights.
13
- - [ ] Tax registrations, elections, and material tax correspondence.
14
-
15
- ## Product And IP
16
-
17
- - [ ] Repository map, architecture overview, and package boundaries.
18
- - [ ] License inventory for direct and material transitive dependencies.
19
- - [ ] OSS license, contributor policy, and third-party notices.
20
- - [ ] Trademark/domain ownership record, if applicable.
21
- - [ ] Evidence that contributors assigned or licensed contributed IP appropriately.
22
- - [ ] List of proprietary datasets, provider contracts, or generated assets, if any.
23
-
24
- ## Security And Privacy
25
-
26
- - [ ] `SECURITY.md`, egress threat model, release-readiness matrix, and incident-response material.
27
- - [ ] Current dependency audit results with runtime/dev separation and remediation plan.
28
- - [ ] Secure-development controls: code review, CI, pinned actions, secret scanning, and release checklist.
29
- - [ ] Data inventory and draft privacy/terms materials clearly labeled as non-operative until counsel approves them.
30
- - [ ] Product data-flow diagram: local runtime, local evidence, optional local telemetry, and undeployed hosted-pilot boundary.
31
- - [ ] Disclosure of limitations: Linux-only enforcement, same-user/filesystem limits, heuristic sanitization, and no deployed hosted control plane.
32
- - [ ] Penetration-test, SOC 2, ISO, or compliance evidence only if actually completed; otherwise state "not completed."
33
-
34
- ## Commercial And Customer Evidence
35
-
36
- - [ ] Dated, sanitized customer discovery ledger with source references.
37
- - [ ] Signed pilot agreements, LOIs, invoices, purchase orders, or renewals, if any.
38
- - [ ] Pilot success criteria and closeout reports.
39
- - [ ] Customer references only with written permission.
40
- - [ ] Pricing hypotheses, quotes, objections, and conversion outcomes marked as observed vs assumption.
41
- - [ ] Explicit statement that as of 2026-08-09 this repository contains no verified paid pilot, LOI, customer outcome, or revenue.
42
-
43
- ## Metrics
44
-
45
- - [ ] Metric definitions: activation, weekly CI use, retained team, prevented egress, bug caught, paid pilot, and expansion.
46
- - [ ] Data-source map and owner for each metric.
47
- - [ ] Local telemetry export policy and opt-in/opt-out evidence.
48
- - [ ] Cohort and retention reports only after data is actually collected.
49
- - [ ] Explanation of metrics unavailable or not measured; never backfill estimates as observed facts.
50
-
51
- ## Financial Model Inputs
52
-
53
- - [ ] Cash balance, burn, runway, headcount/contractor commitments, and material liabilities.
54
- - [ ] Bottom-up pilot model: target accounts, discovery-to-pilot assumptions, fixed pilot scope, support hours, and delivery cost.
55
- - [ ] Pricing research ledger, including null/negative outcomes.
56
- - [ ] Hosting, support, provider, security, legal, insurance, and sales cost assumptions with date/source.
57
- - [ ] Base, downside, and upside scenarios clearly labeled as assumptions.
58
- - [ ] No claim of ARR, MRR, gross margin, CAC, LTV, or pipeline without a source and calculation.
59
-
60
- ## Contracts And Legal
61
-
62
- - [ ] Pilot agreement template reviewed by counsel.
63
- - [ ] Statement of work template: scope, evidence, support boundary, acceptance, confidentiality, and exit.
64
- - [ ] Data-processing terms, subprocessors, retention/deletion terms, and security addendum only when the service model exists and counsel approves them.
65
- - [ ] Insurance, export-control, employment, and open-source compliance records as applicable.
66
-
67
- ## Technical Due Diligence
68
-
69
- - [ ] Link to [technical-due-diligence-index.md](technical-due-diligence-index.md).
70
- - [ ] Release commit SHA and CI evidence from the exact release candidate.
71
- - [ ] Test/build/package/audit outputs with command, date, environment, and known gaps.
72
- - [ ] Architecture decisions, threat model, security findings, and remediation status.
@@ -1,52 +0,0 @@
1
- # Three-Minute Technical Demo
2
-
3
- ## Claim And Limits
4
-
5
- Show a reproducible technical demonstration, not a customer result:
6
-
7
- > An AI coding agent can write unsafe Stripe integration code; GhostAPI can keep a supported Linux test run off production, make failure paths deterministic, and publish sanitized evidence for review.
8
-
9
- Run the enforcement portion only on a compatible Linux runner. Windows and macOS can demonstrate local simulation and MCP behavior controls, but cannot demonstrate `ghostapi run` egress enforcement. Do not run the direct-production-egress fixture outside the enforced Linux boundary.
10
-
11
- The current eval runner deliberately does **not** auto-apply declared `injectedFailures`; configure the failures through MCP before the run. This is an operator-orchestrated demo, not one fully automatic command.
12
-
13
- ## Preflight
14
-
15
- 1. Use a clean checkout of the proposed release commit on Linux with Node.js 20+, `unshare`, and `iproute2`.
16
- 2. Run `npm ci`, `npm run build`, and `node dist/cli/index.js doctor --egress --json`.
17
- 3. Use a temporary `GHOSTAPI_DATA_DIR`; use only fake Stripe keys.
18
- 4. Prepare a small agent-authored test with three cases: retry a `429` while honoring `Retry-After`, abort a delayed local response, and de-duplicate a pull-delivered Stripe webhook. The existing [Stripe example](../../examples/stripe-node/README.md) demonstrates local duplicate webhook delivery.
19
- 5. Start the GhostAPI MCP server using the checked-out build. Ask the coding agent to configure these deterministic local controls before it writes/runs tests:
20
-
21
- ```text
22
- set_api_behavior POST /v1/payment_intents
23
- status: 429
24
- headers: { retry-after: "1" }
25
-
26
- set_api_behavior POST /v1/customers
27
- status: 200
28
- delayMs: 1500
29
- ```
30
-
31
- `delayMs` is bounded to 10 seconds and only delays the specified local behavior. It does not affect a live provider.
32
-
33
- ## Live Script
34
-
35
- | Time | What to show | What to say |
36
- | --- | --- | --- |
37
- | 0:00-0:25 | Give the agent the task: create a Stripe Payment Intent helper with retry/idempotency and webhook de-duplication. | "The point is not that the agent can call Stripe. The point is that the test environment makes dangerous and ambiguous behavior visible before merge." |
38
- | 0:25-0:50 | Show the first agent implementation: it retries after `429` but reuses neither an idempotency key nor timeout-safe state; its webhook handler processes the duplicate twice. | "This is deliberately unsafe demo code, not a production incident." |
39
- | 0:50-1:20 | Run its test through `ghostapi run --policy ghostapi.policy.yaml -- npm test`. The local 429, delayed response, and duplicate delivery reveal the defects. | "The target has loopback only if Linux preflight succeeds. If preflight fails, GhostAPI refuses to launch it." |
40
- | 1:20-1:40 | Run the reference blocked-egress regression: `ghostapi run --policy examples/ci-smoke/ghostapi.policy.yaml -- npm --prefix examples/ci-smoke run test:production-egress`. It must exit non-zero. | "This direct `api.stripe.com` attempt is intentionally blocked by the namespace. The current backend does not attribute each kernel-denied socket individually." |
41
- | 1:40-2:05 | Ask the agent to retain one idempotency key across retry, stop on client timeout, and de-duplicate webhook event IDs. Re-run the local tests. | "The fix is application behavior; GhostAPI exposes the failure path without production credentials or outbound provider calls." |
42
- | 2:05-2:35 | Run the fixed tests through `ghostapi run` and generate evidence from the exact run: `ghostapi evidence generate --policy ghostapi.policy.yaml --run <run.json> --out ghostapi-evidence.json --ci`. | "The evidence is bounded and redacted. It is the review record, not raw request logs." |
43
- | 2:35-3:00 | Show the `Enforced safety check` status and uploaded artifact using the reference [PR workflow](../github-actions.md). | "The claim is narrow: this supported run passed its policy with zero recorded production attempts. It is not a general host sandbox, hosted service, or absolute safety guarantee." |
44
-
45
- ## Expected Outcomes
46
-
47
- - The unsafe implementation's unit/integration assertions fail on `429`, timeout, or duplicate webhook handling.
48
- - The direct-production-egress fixture exits non-zero only within a successful Linux namespace run.
49
- - The corrected implementation's local tests pass.
50
- - The fixed CI run produces a sanitized evidence artifact and passes the chosen policy.
51
-
52
- Do not claim that GhostAPI automatically discovered the bug, injected eval-declared failures by itself, prevented a real production incident, or proves every route from an agent to the internet is impossible.
@@ -1,74 +0,0 @@
1
- # 50 Design-Partner Targets
2
-
3
- This is an account list for research and outreach, not evidence that any company is interested, uses AI coding agents, has the required provider stack, or has been contacted. Do not infer a personal contact from this list. Before outreach, verify the current engineering size, relevant integration risk, public AI-development posture, and appropriate Platform/AppSec/Developer Productivity/Engineering leader through public company channels.
4
-
5
- ## Qualification Criteria
6
-
7
- - B2B SaaS or developer-facing company with an externally integrated product.
8
- - Plausible risk from payments, communications, source-control, webhooks, cloud APIs, or model-provider APIs.
9
- - Likely ability to run one compatible Linux CI workflow.
10
- - A team that can name a technical owner and a buyer for a 3-4 week fixed-scope pilot.
11
-
12
- ## Targets
13
-
14
- | # | Account | Segment | Why It May Fit | Outreach Thesis |
15
- | ---: | --- | --- | --- | --- |
16
- | 1 | Vercel | Developer platform | Agent-assisted development and deployment integrations. | Can a CI artifact improve review of agent-authored integration code? |
17
- | 2 | Sentry | Developer tooling | Error, alerting, and webhook integrations. | Test retries and external notifications without live side effects. |
18
- | 3 | PostHog | Product analytics | Event, webhook, and developer-platform workflows. | Make integration failures repeatable in CI. |
19
- | 4 | Render | Cloud platform | Customer-facing provisioning and API workflows. | Validate agent-authored API clients against bounded failures. |
20
- | 5 | Railway | Cloud platform | Deployment and API-heavy developer workflows. | Test agent changes without reaching production services. |
21
- | 6 | Fly.io | Cloud platform | Infrastructure APIs and release automation. | Review egress and failure behavior before merge. |
22
- | 7 | Supabase | Backend platform | Auth, database, webhook, and API ecosystems. | Exercise client retries and webhook validation locally. |
23
- | 8 | Clerk | Identity platform | Auth and webhook integration risk. | Verify duplicate deliveries and failure handling in CI. |
24
- | 9 | Auth0 | Identity platform | Security-sensitive identity integrations. | Establish deterministic negative-path evidence. |
25
- | 10 | WorkOS | Enterprise identity | Webhook and directory-sync integrations. | Test high-risk callbacks without live tenant data. |
26
- | 11 | LaunchDarkly | Feature management | SDK and webhook-heavy platform surface. | Gate agent-authored integration tests on evidence. |
27
- | 12 | Datadog | Observability | Alerting and API integrations. | Test rate limits and retries without production calls. |
28
- | 13 | New Relic | Observability | Instrumentation and notification integrations. | Identify whether local evidence changes review workflow. |
29
- | 14 | Honeycomb | Observability | Event and API-driven engineering teams. | Evaluate deterministic failure testing for agents. |
30
- | 15 | Grafana Labs | Observability | Plugins, alerts, and external service integrations. | Test outbound boundaries in contributor/CI flows. |
31
- | 16 | PagerDuty | Incident response | External notification and automation risk. | Reproduce failed notification and retry behavior safely. |
32
- | 17 | Incident.io | Incident response | Slack, webhook, and automation workflows. | Test duplicate event and timeout recovery paths. |
33
- | 18 | Linear | Collaboration software | GitHub and notification integrations. | Evaluate safe integration changes authored by agents. |
34
- | 19 | Notion | Collaboration software | API and webhook ecosystem. | Test agent changes against local provider-shaped boundaries. |
35
- | 20 | Airtable | Workflow platform | Automation and third-party API workflows. | Test deterministic error handling before merge. |
36
- | 21 | Zapier | Automation platform | Multi-provider side-effect risk. | Pick one workflow where egress evidence changes a release decision. |
37
- | 22 | n8n | Workflow automation | User-configured external integrations. | Test agent-generated nodes without provider credentials. |
38
- | 23 | Retool | Internal-tools platform | Customer API connections and agent-assisted builds. | Enforce a safe test target for generated integrations. |
39
- | 24 | Temporal | Workflow orchestration | Retry, timeout, and idempotency-heavy workflows. | Validate integration behavior under controlled ambiguity. |
40
- | 25 | Airbyte | Data integration | Connector and external API reliability risk. | Test connector behavior with bounded local scenarios. |
41
- | 26 | Fivetran | Data integration | Provider APIs, auth, and retry semantics. | Explore a reproducible failure-evidence workflow. |
42
- | 27 | Pipedream | Developer automation | Code steps calling many provider APIs. | Keep agent-authored tests out of production by default. |
43
- | 28 | Algolia | Search platform | SDK and webhook/API customer integrations. | Test provider failures and evidence artifacts in CI. |
44
- | 29 | Amplitude | Product analytics | Event ingestion, API, and integration surface. | Validate one agent-generated client failure path before merge. |
45
- | 30 | Snyk | Developer security | AppSec buyer overlap and CI-native workflows. | Assess whether evidence adds value beyond code scanning. |
46
- | 31 | Semgrep | Developer security | CI policy and AI-code review focus. | Test a complementary runtime-evidence workflow. |
47
- | 32 | Sonar | Code quality | AI-generated-code review focus. | Determine whether integration evidence complements static checks. |
48
- | 33 | GitLab | DevOps platform | CI, security, and integration ecosystem. | Explore a narrow CI evidence pilot, not a platform replacement. |
49
- | 34 | CircleCI | CI platform | CI-native customer base and external integrations. | Test whether a reusable safety check is valuable to users. |
50
- | 35 | Harness | Delivery platform | Policy and controlled automation use cases. | Validate egress evidence around one AI-assisted workflow. |
51
- | 36 | Buildkite | CI platform | Engineering teams with flexible CI environments. | Qualify Linux enforcement and artifact retention needs. |
52
- | 37 | HashiCorp | Infrastructure software | API-driven provisioning and security-sensitive workflows. | Assess a narrowly scoped egress/evidence workflow. |
53
- | 38 | Stripe | Payments platform | Payment lifecycle and developer test workflows. | Explore local deterministic payment-failure evidence. |
54
- | 39 | Paddle | Payments platform | Billing and webhook integrations. | Test duplicate delivery and idempotency paths in CI. |
55
- | 40 | Adyen | Payments platform | High-stakes payment integrations. | Qualify whether local simulation adds value to existing test tools. |
56
- | 41 | Plaid | Financial data APIs | Sensitive API and webhook workflows. | Test safe failure/retry behavior without live access. |
57
- | 42 | Mercury | Fintech | Banking workflow side-effect sensitivity. | Validate whether evidence alters one release decision. |
58
- | 43 | Brex | Fintech | Spend and payment integrations. | Explore bounded agent integration testing with no production credentials. |
59
- | 44 | Rippling | HR platform | Payroll, identity, and integration complexity. | Test webhook and external workflow failure paths. |
60
- | 45 | Gusto | HR/payroll | High-consequence external integrations. | Qualify one non-production CI workflow only. |
61
- | 46 | Webflow | SaaS platform | API, app ecosystem, and automation workflows. | Test agent-authored apps/integrations before merge. |
62
- | 47 | Intercom | Customer communications | Messaging/webhook side-effect risk. | Test retries, rate limits, and no-live-send workflow. |
63
- | 48 | Twilio | Communications platform | Messaging API and webhook ecosystem. | Exercise agent-generated integration failures locally. |
64
- | 49 | Resend | Email platform | Email-send integration and developer experience. | Test no-live-send and retry evidence in CI. |
65
- | 50 | ElevenLabs | AI platform | API usage, spend, and model-provider integration risk. | Test agent code against local provider-shaped responses. |
66
-
67
- ## Outreach Sequence To Five Paid-Pilot Decisions
68
-
69
- 1. Research 50 accounts and select 20 that meet all four qualification criteria.
70
- 2. Send 20 concise role-based outreach notes asking for a 20-minute discovery call about one existing integration review or failure path; do not claim a customer result.
71
- 3. Run 10 discovery calls using [the question set](../design-partners/discovery-questions.md). Record only a dated, sanitized private summary.
72
- 4. Invite the 5 strongest fits to a live technical demo and ask each for a binary pilot decision, named owner, one Linux CI workflow, and a 3-4 week time commitment.
73
- 5. Offer a written fixed-scope paid-pilot proposal only where the buyer confirms a budget process and measurable success criteria. Count a decision of "no," "later," or "OSS only" as a valid outcome; do not convert interest into traction.
74
- 6. Target outcome: five paid-pilot **decisions**, not five fabricated contracts. Success is at least one signed paid pilot or a documented reason to reshape the wedge.
@@ -1,37 +0,0 @@
1
- # Launch Posts
2
-
3
- Use only after the exact release commit has passed the pinned Linux CI workflow. Replace bracketed fields with verified facts or remove them. Do not add customer, revenue, install, or performance claims without a dated source.
4
-
5
- ## Hacker News: Show HN
6
-
7
- **Title:** Show HN: GhostAPI - local API simulation and CI evidence for AI-authored integrations
8
-
9
- **Post:**
10
-
11
- I built GhostAPI because AI coding agents can write and run integration code, but a base URL and a mock alone do not show reviewers whether a test touched production or exercised failure paths.
12
-
13
- GhostAPI runs provider-shaped APIs locally, exposes deterministic controls through MCP, masks secret-shaped values, and on compatible Linux hosts can run a target in a loopback-only namespace. It can produce a sanitized evidence artifact for CI.
14
-
15
- The first deep provider pack is Stripe-shaped local simulation. The repo includes examples for `429`, delayed responses, duplicate webhook delivery, policy checks, record/replay, and a GitHub Actions reference workflow.
16
-
17
- Important limits: Linux enforcement requires `unshare` and `iproute2` preflight; Windows/macOS do not have equivalent process enforcement. This is not a hostile-code filesystem sandbox or a hosted service.
18
-
19
- I am looking for teams that use coding agents on Stripe/webhook/integration code and can test one CI workflow. What failure path or review decision would make an artifact like this useful?
20
-
21
- ## Reddit
22
-
23
- **Title:** I made a local safety/evidence layer for AI-authored API integrations. Looking for harsh feedback.
24
-
25
- AI coding agents make it easier to create integration code, but they also make it easier to run tests that call real providers or skip retry/idempotency edge cases. GhostAPI is an OSS local runtime that simulates selected APIs, lets an agent configure deterministic failures through MCP, and creates a sanitized CI artifact.
26
-
27
- On supported Linux hosts, `ghostapi run` uses a loopback-only namespace and fails closed if it cannot create it. On Windows/macOS it is local simulation only, not egress enforcement.
28
-
29
- I am not claiming traction or a hosted enterprise product. I want feedback from engineers who have had to review AI-authored Stripe, webhook, email, or model-provider code: would a reproducible `429`/timeout/duplicate-delivery test plus CI evidence change your merge process? What would make it unusable?
30
-
31
- ## X / LinkedIn
32
-
33
- AI coding agents can write integration code. The harder question is how a team proves that agent-authored tests stayed off production and exercised the failure paths that cause duplicate payments, bad retries, or unsafe webhooks.
34
-
35
- GhostAPI is an OSS local runtime for that narrow problem: provider-shaped simulation, MCP-controlled deterministic failures, secret masking, and Linux-only fail-closed egress runs with sanitized CI evidence.
36
-
37
- No hosted service or customer traction claims yet. I am recruiting teams willing to validate one real CI workflow around Stripe, webhooks, or other high-risk integrations.
@@ -1,30 +0,0 @@
1
- # Metrics And Evidence Boundary
2
-
3
- Reviewed on 2026-08-09 from `SESSION_LOG.md`, the local CLI telemetry export, and repository verification records.
4
-
5
- | Metric | Observed value | Source | Classification |
6
- | --- | ---: | --- | --- |
7
- | Root test suite | 225 passing; 8 Linux-only namespace tests skipped on Windows | Session 22, 2026-08-09 | Development verification, not customer traction |
8
- | WSL Linux test suite | 232 passing; 1 optional test skipped | Session 22, 2026-08-09; Ubuntu WSL 2, Node.js 20.20.2, Linux filesystem copy | Development verification, not customer traction |
9
- | Linux CI smoke demonstration | Safe run generated PASS evidence; direct `api.stripe.com` fixture failed inside the namespace as expected | Session 22, 2026-08-09 | Reproducible technical demo, not customer outcome |
10
- | Linux enforced full suite | `ghostapi run -- npm test` completed in 48.75 seconds and generated PASS exact-run evidence | Session 22, 2026-08-09; Ubuntu WSL 2, Node.js 20.20.2 | Development verification, not a first-value benchmark or customer traction |
11
- | Hosted-pilot tests | 7 passing | Session 21, 2026-08-08 | Development verification only |
12
- | CI design partners | 0 | `SESSION_LOG.md` metrics table, 2026-08-04 | Observed status |
13
- | Paying design partners | 0 | `SESSION_LOG.md` metrics table, 2026-08-04 | Observed status |
14
- | Weekly active projects | Not measured | `SESSION_LOG.md` metrics table | Unknown |
15
- | Prevented production egress attempts | Not measured | `SESSION_LOG.md` metrics table | Unknown |
16
- | Confirmed bugs caught before merge | Not measured | `SESSION_LOG.md` metrics table | Unknown |
17
- | Local telemetry counters | all zero; telemetry disabled | `ghostapi telemetry export --json`, 2026-08-09 | Local state; not an install/user metric |
18
- | Windows local onboarding measurement | 3.03 seconds | `docs/development/onboarding-smoke.md`, 2026-08-08 | Single-host simulation measurement, not Linux enforcement or public benchmark |
19
-
20
- ## Rules For External Materials
21
-
22
- - Label a demo as a demo. It is not a prevented incident, customer outcome, or benchmark.
23
- - Label every future number as a **target** or **assumption** with a date and owner.
24
- - Do not infer active users from package downloads, GitHub stars, local telemetry, workflow runs, or conversations.
25
- - Do not use an old repository statement as customer proof without a dated, sanitized primary record.
26
- - Do not claim an enforcement result from Windows or macOS. `ghostapi run` must succeed on a compatible Linux host, and the resulting evidence must be retained.
27
-
28
- ## Current Release Evidence
29
-
30
- Session 22 additionally ran the full namespace suite and CI smoke workflow locally in Ubuntu WSL 2 on Node.js 20.20.2. The safe fixture produced PASS evidence with a completed Linux namespace boundary, one allowed local Stripe-shaped request, zero production attempts, no secret categories, and the required scenario. The direct `api.stripe.com` fixture failed as expected inside the loopback-only namespace. This does not substitute for the pinned GitHub Linux workflow on the exact release commit before external publication. See [release-readiness.md](../release-readiness.md).
@@ -1,25 +0,0 @@
1
- # 12-Month Gated Roadmap
2
-
3
- This roadmap is a decision framework, not a promise of delivery or revenue. Dates are relative to the first verified external release. Every milestone requires the listed evidence; absence of evidence blocks expansion.
4
-
5
- | Period | Milestone | Evidence Required | Do Not Do Yet |
6
- | --- | --- | --- | --- |
7
- | Month 0 | Release candidate proof | Pinned GitHub Linux CI passes on the exact commit; sanitized artifact reviewed; package smoke and production dependency audit pass. | Do not call Windows local simulation an egress-enforcement result. |
8
- | Months 1-2 | 20 discovery conversations | Dated, sanitized notes using the design-partner questions; clear segment/risk/buyer patterns. | Do not infer demand from downloads, stars, or polite feedback. |
9
- | Months 2-3 | Five pilot decisions | Each decision has a named workflow, owner, buyer response, and privacy-safe evidence record. | Do not build self-serve billing, entitlement, or a general hosted service. |
10
- | Months 3-4 | One Linux CI design-partner workflow | Weekly runs for two consecutive weeks plus a reviewed artifact or documented blocker. | Do not claim retention from installation. |
11
- | Months 4-6 | One confirmed value outcome | A customer-sourced, dated record of a merge/release decision changed, prevented egress supported by evidence, or real integration defect caught before merge. | Do not publish a ROI claim before a source exists. |
12
- | Months 4-6 | Close remaining local proof gaps | Automatic typed failure-plan/scenario receipts, added Stripe conformance only where a partner needs it, and Vite/Vitest audit migration in a dedicated compatibility change. | Do not widen providers just for logo coverage. |
13
- | Months 6-8 | Paid-pilot decision | Signed fixed-scope pilot or explicit documented rejection after proposal; agreed success criteria and manual invoice boundary. | Do not add card collection or subscription infrastructure without a repeatable paid workflow. |
14
- | Months 8-10 | Team-control-plane decision | At least two partners show the same shared evidence/policy workflow and staging operations prove hosted controls. | Do not offer the current undeployed hosted skeleton. |
15
- | Months 10-12 | Product focus decision | Retention, value, and willingness-to-pay evidence support either CI/shared-evidence focus, a revised wedge, or stopping the expansion. | Do not build production-action gateway, credential broker, or broad enterprise surface without a validated workflow and stronger security model. |
16
-
17
- ## Confirmed Risks Driving This Roadmap
18
-
19
- - Exact-release GitHub Linux CI proof is outstanding.
20
- - Local Linux enforcement is verified in Ubuntu WSL 2, but the pinned GitHub workflow has not run on the exact release commit.
21
- - Automatic application of eval-declared failures and scenario completion receipts is not implemented.
22
- - Stripe compatibility is limited to implemented local capabilities, not live-provider parity.
23
- - The hosted pilot remains undeployed; auth, migrations, queues, load, and disaster recovery are unverified.
24
- - The full dependency audit retains five development-only Vite/Vitest/esbuild findings pending a separate breaking migration.
25
- - No customer evidence validates the proposed paid/team wedge.
@@ -1,37 +0,0 @@
1
- # Technical Due Diligence Index
2
-
3
- ## Product Runtime
4
-
5
- - [Root README](../../README.md): quickstart, local capabilities, platform support, and safety limits.
6
- - [Usage guide](../usage.md): commands, policy, evidence, eval, record/replay, contracts, and telemetry.
7
- - [Provider authoring](../providers/authoring-packs.md): provider-pack boundary and conformance model.
8
- - [Stripe pack](../providers/stripe-core-pack.md): implemented Stripe-shaped capabilities and limits.
9
-
10
- ## Security
11
-
12
- - [Security policy](../../SECURITY.md)
13
- - [Egress threat model](../security/egress-threat-model.md)
14
- - [Policy as code](../policy.md)
15
- - [Release readiness](../release-readiness.md)
16
- - [Release migration and rollback](../release-migration-and-rollback.md)
17
- - [Release checklist](../release-checklist.md)
18
-
19
- ## CI And Evidence
20
-
21
- - [GitHub Actions PR safety check](../github-actions.md)
22
- - [Generic CI guide](../ci.md)
23
- - [Reference workflow](../../.github/workflows/ghostapi-pr-safety.yml)
24
- - [CI smoke fixture](../../examples/ci-smoke/README.md)
25
- - [Agent eval example](../../examples/evals/README.md)
26
-
27
- ## Architecture And Operations
28
-
29
- - [Team-control-plane prototype](../team-control-plane.md): local-only model and security boundaries.
30
- - [Hosted pilot](../hosted-pilot.md): undeployed architecture and deployment gates.
31
- - [Design-partner validation kit](../design-partners/README.md)
32
- - [Commercial readiness](../commercial/README.md)
33
- - [Session log](../../../SESSION_LOG.md): chronological implementation and verification history; verify against source and Git history.
34
-
35
- ## Verification Snapshot
36
-
37
- Session 22 on 2026-08-09 passed the Windows root suite (225 passed, 8 Linux-only skips), typecheck, build, packed-package smoke, and production dependency audit. It also passed the Linux root suite in Ubuntu WSL 2 on Node.js 20.20.2 (232 passed, 1 optional skip), including the namespace egress suite and an actual safe-evidence/blocked-egress CI smoke run. The pinned GitHub Linux CI workflow still must run on the exact external release commit before publication. Full development dependency audit remains open for five Vite/Vitest/esbuild findings. See [metrics-and-evidence.md](metrics-and-evidence.md) and [release-readiness.md](../release-readiness.md).
@@ -1,25 +0,0 @@
1
- # YC-Style Answers
2
-
3
- Replace every bracketed field with founder-provided, independently confirmable information. Do not submit placeholders.
4
-
5
- | Question | Draft answer |
6
- | --- | --- |
7
- | What is your company going to make? | GhostAPI is safety and verification infrastructure for software built by AI agents. It starts as a local provider simulation runtime with deterministic failure controls and, on compatible Linux hosts, a fail-closed test-run boundary plus sanitized CI evidence. |
8
- | What is your product? | Developers point integration code at local provider-shaped APIs, configure failures through MCP, run tests through a versioned policy, and retain a bounded evidence artifact for review. The current local product supports selected providers; Stripe is the deepest pack. |
9
- | Where do you live now and where will the company be based after YC? | [Founder-provided location and intended company location.] |
10
- | Why did you pick this idea? | [Founder-provided first-hand observation. Do not invent a prior incident.] The product hypothesis is that teams need evidence and failure testing for agent-authored integration code, not another generic mock server. |
11
- | How far along are you? | The repository has a tested local runtime, policy/evidence/eval primitives, Stripe-shaped local workflows, a GitHub Actions reference check, and an undeployed hosted-pilot skeleton. The current evidence record has zero CI design partners and zero paying partners; no revenue or retention is claimed. |
12
- | How long have you worked on this? | [Founder-provided dates and full-time/part-time status.] |
13
- | Are people using it? | No validated usage claim is available as of 2026-08-09. The next goal is five paid-pilot decisions, beginning with one selected Linux CI workflow per team. |
14
- | Do you have revenue? | No revenue is documented in the repository as of 2026-08-09. |
15
- | Who are the competitors? | Provider test environments, WireMock, MSW, Postman, and CI-native checks each cover adjacent jobs. GhostAPI's hypothesis is that agent-native local simulation plus supported egress enforcement and evidence is a useful combined workflow. See [the competitor matrix](README.md#competitive-matrix). |
16
- | How will you make money? | Keep the local OSS runtime free. Validate a fixed-scope paid pilot for protected CI workflows and retained sanitized evidence before naming a recurring price. Hosted team/enterprise controls are not currently available. |
17
- | Why now? | Coding agents can create and run more integration code autonomously, increasing the need to make external side effects and failure handling reviewable. This is a timing hypothesis, not a quantified market claim. |
18
- | Founder video / bios | [Founder names, roles, education, employment history, technical work, and relevant domain experience. Use only facts the founders approve.] |
19
- | Equity split | [Founder-provided current split and rationale.] |
20
- | Have you incorporated? | [Founder-provided jurisdiction, entity type, incorporation date, or "not incorporated".] |
21
- | Fundraising | [Founder-provided prior funding, current raise, runway, and investor names if disclosure is appropriate.] |
22
-
23
- ## One-Minute Spoken Pitch
24
-
25
- AI agents now write and run code that touches payments, email, GitHub, and model APIs. Teams can point SDKs at a mock, but that does not prove an agent did not create another client, call a direct IP, or skip the timeout and duplicate-delivery cases that break integrations. GhostAPI creates a local provider-shaped test world, lets the agent configure deterministic failures, and on supported Linux runs the test with loopback only. CI keeps a sanitized artifact from that exact run. We are early: the code exists, but we have no validated customers or revenue. We are looking for design partners whose merge process would change if they could prove this for one high-risk workflow.
@@ -1,111 +0,0 @@
1
- # Hosted Pilot Architecture
2
-
3
- ## Scope And Truthful Guarantees
4
-
5
- The hosted pilot is a separate Bun/Elysia application under `hosted/`. The existing Node.js local runtime remains account-free and does not communicate with the hosted service by default.
6
-
7
- The design targets 1,000 sustained and 5,000 peak API requests per second, with CI report ingestion and scenario reads as the first workflows. These are capacity targets to prove with production-shaped load tests, not current guarantees.
8
-
9
- Supabase read replicas are asynchronous and read-only. All writes use one primary region, and immediate reads after a write also use that primary. Fly may run stateless API instances near clients later, but it must not claim multi-region writes while Supabase has one writable primary. Supabase PITR supports fine-grained recovery, but restoration takes the project offline and duration depends on database size; this stack does not prove RPO under one minute or RTO under five minutes until a vendor-supported configuration and repeated DR drills demonstrate both.
10
-
11
- ## Architecture
12
-
13
- ```mermaid
14
- flowchart LR
15
- CI[CI runner or agent] -->|ingest key + idempotency key| API[Bun + Elysia write API]
16
- Agent[Agent] -->|session| API
17
- API --> Primary[(Supabase PostgreSQL primary)]
18
- API --> Redis[Upstash Redis: rate limits + cache only]
19
- Primary --> Outbox[Transactional outbox]
20
- Dispatcher[Outbox dispatcher] --> QStash[Upstash QStash]
21
- QStash --> Worker[Elysia internal worker]
22
- Worker --> Primary
23
- Reader[Scenario reader] --> API
24
- API --> Primary
25
- ```
26
-
27
- Redis is deliberately not the source of truth for reports, authorizations, idempotency, or job completion. QStash is at-least-once transport only. PostgreSQL owns durable acceptance, idempotency, outbox state, job receipts, scenario registry, report state, and audit data.
28
-
29
- The migration enables RLS on the application tables. The hosted API uses a dedicated least-privilege `service_role` database role with explicit policies; browsers never receive that connection string. Tenant filtering remains explicit in every API query, so authorization does not rely on a future client-side `set_config` convention.
30
-
31
- ## Request Paths
32
-
33
- ### Report Intake
34
-
35
- `POST /v1/projects/:projectId/reports` requires:
36
-
37
- - `Authorization: Bearer <CI ingest secret>`
38
- - `X-GhostAPI-Ingest-Key-Id: <public UUID>`
39
- - `Idempotency-Key: <16-256 character key>`
40
-
41
- The API hashes the canonical request. In one primary-Postgres transaction it validates the key, creates or resolves the idempotency ledger entry, writes the bounded sanitized report, and writes an outbox event. Only then does it respond with `202 Accepted`.
42
-
43
- If the API crashes after commit but before replying, the CI runner retries with the same idempotency key and receives the original report id. If the same key has a different body, it receives `409`.
44
-
45
- ### CI Ingest Keys
46
-
47
- Project developers provision a key with `POST /v1/projects/:projectId/ingest-keys` and an `expiresInDays` value from 1 to 90. The response returns an id, non-sensitive prefix, expiry, and a plaintext secret exactly once. Only the SHA-256 digest is written to PostgreSQL. Developers revoke a key with `POST /v1/projects/:projectId/ingest-keys/:keyId/revoke`; create and revoke actions write tenant audit events. The dashboard/client must not persist, log, or re-display the plaintext secret.
48
-
49
- ### Scenario Reads
50
-
51
- Scenario versions are immutable. Publishing creates a new `{ scenario_key, version }` row. CI runs pin a scenario version; agents read by key/version or a selected current version. Cursor pagination and a read cache belong at the API edge only after primary-query correctness is load-tested.
52
-
53
- Read endpoints that must observe a preceding write go to the primary and return `X-Consistency: primary`. A future replica endpoint may return `X-Consistency: eventual`; it cannot back read-your-writes behavior.
54
-
55
- ### Workers
56
-
57
- Outbox dispatch uses `FOR UPDATE SKIP LOCKED`, leases a bounded batch, then publishes an event id to QStash. The QStash receiver verifies the request signature before parsing its body. The worker transaction creates a permanent `job_receipts` record and performs report processing atomically. Redelivery returns a duplicate success without duplicating scenario results.
58
-
59
- The dispatcher can publish the same event more than once after an ambiguous network outcome. That is intentional: QStash deduplication has a limited window, so the permanent PostgreSQL receipt is the correctness boundary. A redelivery while an unexpired worker lease is active returns a retryable `503`; a stale lease can be safely acquired again. A completed receipt returns success without duplicating results.
60
-
61
- ## PostgreSQL Data Model
62
-
63
- `hosted/migrations/001_core.sql` creates:
64
-
65
- | Table | Purpose |
66
- | --- | --- |
67
- | `app.organizations`, `app.organization_memberships`, `app.projects` | Tenant hierarchy and membership. |
68
- | `app.scenario_versions` | Immutable shared scenario definitions with checksum. |
69
- | `app.ci_ingest_keys` | Public id plus SHA-256-only CI secret digest and scope. |
70
- | `app.reports` | Bounded sanitized CI report payload and processing state. |
71
- | `app.idempotency_ledger` | Durable `(project_id, key)` replay contract. |
72
- | `app.outbox_events` | Transactional event publication source. |
73
- | `app.job_receipts`, `app.scenario_run_results` | At-least-once worker deduplication and results. |
74
- | `app.audit_events` | Hosted control-plane audit metadata. |
75
-
76
- Better Auth manages its own `auth` schema/tables through its migration CLI. Configure `AUTH_DATABASE_URL` with `search_path=auth`; application `DATABASE_URL` should use `search_path=app`. Keep application memberships separate from Better Auth accounts so a later SAML/OIDC identity mapping does not rewrite tenant authorization.
77
-
78
- ## Queue And Rate Limits
79
-
80
- - Queue only identifiers and schema version, never raw report JSON, authorization headers, cookies, or provider credentials.
81
- - Do not use a single FIFO queue. Shard flow-control keys by report/project as needed; workers make every handler idempotent.
82
- - Verify QStash signatures on every internal job request.
83
- - Redis keys are opaque non-secret project/principal identifiers, not bearer tokens, email addresses, or raw session ids. The default CI key budget is 300,000 requests per minute per project only as a pilot starting point; derive final limits from tenant budgets and load tests.
84
- - Rate limits must cover unauthenticated auth routes, CI ingest key id, user/organization, project, and QStash worker endpoint separately.
85
- - Do not enable automatic retries for non-idempotent external effects. Scenario processing remains local metadata until a typed action gateway exists.
86
-
87
- ## Capacity Plan
88
-
89
- At 1,000 sustained writes per second, report size and retention determine cost and storage more than framework choice. Before accepting pilot load, measure actual p50/p95/p99 report bytes, write/read ratio, tenant count, retention requirements, index growth, WAL throughput, database pool waits, QStash backlog, and worker drain rate.
90
-
91
- Initial deployment is one API write region co-located with the Supabase primary, with at least two Fly machines. Use bounded database pools per machine and Supavisor transaction pooling. Add read replicas only after primary query/index behavior is correct and clients tolerate eventual consistency.
92
-
93
- ## Required Pre-Launch Tests
94
-
95
- 1. Kill the API after Postgres commit but before response; retry must return one report id and one outbox event.
96
- 2. Force QStash redelivery and worker failure; expect one job receipt and one scenario result per report/version.
97
- 3. Soak 1,000 sustained RPS and burst 5,000 peak RPS using production p99 payloads; verify intake p95/p99, pool waits, WAL, queue depth, worker drain, and zero lost accepted report ids.
98
- 4. Verify primary read-your-writes and clearly labeled replica staleness.
99
- 5. Run a production-equivalent DR drill. Reject the stated RPO/RTO target until observed accepted-data loss is below 60 seconds and restored write availability is below 5 minutes.
100
- 6. Run authorization tests for every organization/project boundary, disabled/revoked ingest key, expired session, body/key mismatch, and direct worker invocation without a valid QStash signature.
101
-
102
- ## Identity
103
-
104
- The hosted app mounts Better Auth for Google OAuth and email/password. Better Auth owns authentication accounts/sessions; GhostAPI owns organization membership and authorization. A later enterprise identity layer maps a verified OIDC/SAML subject to an internal user id. It must not accept arbitrary issuer, email-domain, or client-provided role claims.
105
-
106
- ## Sources Checked 2026-08-08
107
-
108
- - Elysia validation and handler status behavior: official Elysia documentation.
109
- - Better Auth PostgreSQL and Elysia integration: official Better Auth documentation.
110
- - Supabase read replicas and PITR recovery limits: official Supabase documentation.
111
- - QStash deduplication, publish, receiver verification, and at-least-once guidance: official Upstash documentation.