Files
ocp/docs/PROMOTION.md
38da104b97 chore(release): v3.21.0 — TUI cleanup + client-tools/ToS docs + promotion plan (#145)
* refactor(tui): dead-code / footgun cleanup (A1/A2/A3)

ALIGNMENT.md Rule 2: infra-only, no new cli.js wire behavior.
No protocol, no endpoint, no credential changes.

A1 (session.mjs): delete resolveTuiEntrypointEnv() and its call site
+ the redundant env-strip block around the spawnSync call. The function
mutated a {env} object passed to spawnSync (tmux itself), but tmux does
NOT forward that env to the pane; the pane's claude gets its env ONLY
from the `env` prefix string built inside buildTuiCmd (verified live
2026-06-01). The spawnSync {env} is intentionally minimal now; only
env.HOME is retained (tmux binary reads it). All claude-specific vars
go via the buildTuiCmd prefix string, unchanged. Tests for the now-
deleted function removed; test count drops by 7 (expected).

A2 (transcript.mjs): delete encodeCwd() and transcriptPath() exports.
Production resolves transcripts exclusively via findTranscriptPath()
(glob by session-id); these two helpers carried a fragile path-encoding
rule used only by their own tests. grep confirms zero non-test importers.
Added a TODO comment near findTranscriptPath() noting a CI fixture-
contract test would make claude-schema drift fail loudly. Tests removed;
count drops by 2.

A3 (session.mjs + README): remove the CLAUDE_SKIP_PERMISSIONS branch
that pushed --dangerously-skip-permissions when OCP_TUI_FULL_TOOLS=1.
OCP_TUI_FULL_TOOLS=1 now always takes the --allowedTools path. Rationale:
claude v2.1.x shows an interactive bypass-acceptance screen that a
headless tmux TUI cannot answer — bricks the turn (tui_paste_not_landed
/ wallclock cap), not recoverable without a human. The working path is
--allowedTools + scratch-home settings.json additionalDirectories.
README OCP_TUI_FULL_TOOLS row updated to document the removal and the
correct alternative; CLAUDE_SKIP_PERMISSIONS row for the -p path is
unchanged (still used in server.mjs). Test updated: skip-permissions
case replaced with an assertion that --dangerously-skip-permissions is
absent from the full-tools command.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs: client-tools boundary, ToS honesty, promotion plan (B1/B2/B3)

ALIGNMENT.md Rule 2: docs-only, no new cli.js wire behavior.
No protocol, endpoint, or credential changes.

B1 (README): add 'Client-tools boundary' subsection under 'How It
Works'. Documents that OCP is a text-prompt bridge only — it does not
pass OpenAI tools/functions or Anthropic tool_use blocks to the client.
Clients receive assistant TEXT only; client-local tool execution is
not supported by design (bypassing cli.js = out of scope per
ALIGNMENT.md).

B2 (README): two updates to 'Why OCP?' and the LAN-sharing section.
(a) New bullet: OCP drives the official claude CLI as-is — no OAuth
token extraction, no binary patching, no protocol invention — so
traffic looks like genuine Claude Code (cc_entrypoint=cli).
(b) LAN-sharing paragraph strengthened: pooling one Claude subscription
across multiple distinct people may violate Anthropic's Consumer ToS
and risk account suspension by the abuse classifier. The defensible
framing is 'one person, your own devices'; friends/team sharing is
not. Replaces the softer 'account terms are your call' language.
Feature and auth-mode docs are unchanged.

B3 (docs/PROMOTION.md): new promotion strategy doc. Covers: goal
(polish + low-key OSS visibility, NOT growth-hacking given the live
ToS/billing risk), pre-requisites (stability first), honest ToS
disclosure requirement, items explicitly skipped (multi-backend
routing, gateway model-discovery — delegated to OLP; raw API
passthrough — ALIGNMENT.md scope), TUI toggle as billing-split
insurance, and low-key visibility actions. Framed as a recommendation
for the maintainer to review, not a committed plan.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore(release): v3.21.0 — TUI cleanup + docs honesty + promotion plan

ALIGNMENT.md Rule 2: release prep; no new cli.js wire behavior.

Bump version 3.20.1 → 3.21.0. CHANGELOG entry covers:
- A1/A2/A3 TUI dead-code removals (inert entrypoint-env path,
  test-only transcript helpers, headless-unusable skip-permissions)
- B1/B2/B3 docs (client-tools boundary, ToS honesty, Why-OCP posture,
  promotion plan)
- Previously-shipped v3.20.x items documented for completeness:
  spawn-home isolation, bounded concurrency queue + 429, ocp restart,
  ocp-plugin OpenClaw compat.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: dtzp555 <dtzp555@gmail.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 11:50:06 +10:00

4.6 KiB
Raw Permalink Blame History

OCP Promotion Strategy — "Stable & Visible"

This document is a recommendation for the maintainer to review and adjust, not a committed plan. It reflects the project's current posture (post-v3.21.0) and should be revisited whenever the Anthropic billing / ToS environment changes significantly.


1. Goal: Polish + Low-Key OSS Visibility

The goal is stability and quiet discoverability, not growth-hacking. OCP is a personal power tool that has been open-sourced because others can benefit from it. The right audience finds it via GitHub search, issue threads in related projects, and word of mouth — not viral posts.

Explicitly avoid:

  • HN / Reddit front-page pushes, influencer outreach, or any campaign that would attract a large influx of users before the ToS/billing situation has settled. Anthropic is actively tightening billing and enforcement on subscription-sharing (the June-15 Agent-SDK billing split is paused, not cancelled — and consumer-ToS enforcement on multi-person sharing is a live risk). A high-traffic spotlight right now would draw scrutiny that a low-profile project avoids.
  • Promising features that require bypassing the claude CLI (raw API calls, OAuth extraction, etc.) — that would violate ALIGNMENT.md and the ToS simultaneously.

2. Pre-Requisite: Stability First

Do not promote until the house is in order:

  • The concurrency / latency perf fixes are shipped (v3.20.xv3.21.0).
  • Docs honesty is complete (client-tools boundary, ToS sharing disclosure, this doc).
  • The June-15 Agent-SDK billing split is either confirmed cancelled or OCP has a confirmed stable path (TUI toggle as insurance — see §5 below).

Promoting a project that has known rough edges in docs or stability only generates support burden and negative first impressions.


3. Honest ToS Disclosure on Sharing

Any promotion materials must carry the same disclosure as README.md § "Deployment model & security":

Pooling a single Claude subscription across multiple distinct people may violate Anthropic's Consumer Terms of Service and risk account suspension. The defensible framing is "one person, your own devices". Friends/team sharing is not.

This framing should appear in any README badge, linked blog post, or issue comment that mentions LAN sharing. It is not a disclaimer that discourages usage — it is honest positioning that protects both the project and its users.


4. What to Explicitly Skip

These items are not gaps in OCP — they are deliberate stance decisions:

  • Multi-backend routing (routing to OpenAI, Gemini, Llama, etc.) — that is the sibling OLP project's role. OCP stays Claude-only by design.
  • Gateway model-discovery (auto-detecting which models a remote server offers) — not needed for OCP's single-provider, single-subscription model. models.json is the SPOT.
  • Raw Anthropic API passthrough (bypassing the claude CLI) — out of scope per ALIGNMENT.md.

Do not add these to OCP roadmaps or respond to feature requests for them with "planned" — the correct answer is "that's OLP territory" or "out of scope per ALIGNMENT.md".


5. TUI Toggle as Insurance

The CLAUDE_TUI_MODE opt-in is the primary mitigation if the June-15 billing split reactivates and makes the default -p path draw from the metered Agent SDK credit pool.

Keep the TUI toggle:

  • Functional and tested across the three deployment hosts.
  • Documented in the README, including the security constraints (single-user only).
  • Easily discoverable for users who get unexpectedly metered.

If the split reactivates, the recommended operator path is: set CLAUDE_TUI_MODE=true + CLAUDE_CODE_OAUTH_TOKEN → credential-isolated scratch home → subscription pool. That path is already shipped and documented.


6. Low-Key Visibility Actions (when §2 pre-requisites are met)

  • Keep the GitHub README polished and honest — it is the primary landing page.
  • Respond promptly to issues and PRs — the project's reputation is built on reliability, not marketing.
  • Add OCP to the awesome-claude / awesome-llm-tools lists if they exist and allow self-PRs — low-effort, targeted, reaches the right audience.
  • When related projects (Cline, OpenCode, OpenClaw, Continue.dev) post about local Claude proxies, a short factual comment linking to OCP is appropriate — not spam.
  • Maintain the CHANGELOG.md with clear, honest summaries — users who are already running OCP are the best vector for word-of-mouth.

Last updated: v3.21.0 cleanup cycle. Maintainer should re-read before any external promotion.