withOhm

公式

AIトラフィックコントロールプレーン(カオスガバナー):Redisプロンプトリプレイ、準拠型ウェブインジェスト、SSO組織台帳、Agent Shell。BYOK OpenAI互換イングレス。Cursorはオプション。MCPは互換性クライアントです。

withOhm MCPで何ができますか?

  • キャッシュされたプロンプトの再生 — AIに同一のリクエストを再送信させ、X-AT-Cache: HIT でバイト単位で同一のレスポンスを取得します。新規モデル呼び出しではなくヒットとして課金されます。
  • 暗号化レシートの検証 — アシスタントに verify_receipt.py を使用して任意のレスポンスの署名付き X-Ohm-Receipt JWS を確認させ、ヒットが実際に発生したものであり、主張されたものではないことを証明します。
  • 公開ウェブコンテキストの取得ohm_fetch_web を使用して公開ページを編集済みのマークダウン/JSONとして取得し、web_purposeweb_compliance_ack などのコンプライアンスフラグを適用します。
  • 使用量と請求の確認ohm_usage をクエリして、ohm_cache_hitohm_cache_missohm_web_fetch メーターにわたるメータリング消費量と、クロステナント節約見積もりを確認します。
  • プロキシ経由のチャットohm_chat を使用して、OpenAI互換のリクエストを任意のプロバイダー(OpenAI、Anthropic、Googleなど)に単一のベースURL経由で送信し、X-Ohm-Upstream-Key でBYOKを実現します。

ドキュメント

Ohm (withOhm)

CI Golden path (nightly, production)

一言で言うと: withOhm は、アプリ(または Cursor)と OpenAI/Anthropic などの間に位置するプロキシです。モデルに再課金する代わりに、バイト単位で同一のリクエストを無料でリプレイし、コンプライアンス管理下で公開 Web コンテキストを取得し、複数の不透明なプロバイダー請求書の代わりに、監査可能で暗号学的に領収書付きの 1 つの請求書を提供します。

無駄な反復推論に対するメータリングパイプ: OpenAI 互換の入口、Redis プロンプトリプレイ、コンプライアンス準拠の Web 取り込み、SSO 組織テナント、そして企業向けのクリーンな台帳。企業にとって同じパイプは AI 支出のカオスガバナーです(標準的なウェッジ: docs/GEM_POSITION.md)。Cursor/MCP はオプションのクライアントです。

正確なリプレイヒットは上流トークンをゼロ消費。プロバイダー間の一貫性。局所性 — Redis エッジ読み取り。リプレイと監査の価値。 OpenAI 互換の任意のクライアント(または Ohm Agent Shell)を 1 つのベース URL に向けます。キーを保持するか、管理プールを使用します。配管をレンタルし、カオスを統治します。

サイト: https://www.withohm.dev · API: https://api.withohm.dev/v1 · ワークベンチ: /workbench · アーキテクチャ: docs/ARCHITECTURE.md · ビジョン: docs/VISION.md · エンタープライズ: docs/ENTERPRISE_CHAOS.md · Gem: docs/GEM_POSITION.md · ケア監査: docs/CARE_AUDIT.md — すべての公開主張に適用される真実維持の規律です。エンジニアリング対トラクション比率を判断する前に読んでください。

ライセンス: MIT(LICENSE + NOTICE を参照)。ソースはオープンですが、ホスト型 withOhm パイプは商用メータリングサービスです。パッケージ/キー名はまだ at-utility / sk-at-*(レガシー AT プレフィックス)と表示される場合があります。製品は withOhm です。

ステージ(率直に)

誇張なし: withOhm は、省略による偶然ではなく設計によりプレシードかつプレトラクションです。完全な表とソーシングルール: docs/STATUS.md

事実現在
バージョン0.1.2
デザインパートナー10 チーム目標のうち 0(docs/DESIGN_PARTNERS.md — 「ゼロから」)
機関投資なし。法人化前(docs/distribution/INVESTOR_INTRO_TARGETS.md
リージョン単一(us-east-1)。契約 SLA なし
自動テストカバレッジtests/ で 30 ファイル、215+ テスト関数(pytest -q、プッシュごとに CI)

エンジニアリングと監査の規律(テスト、署名付き領収書、INSPECTION.mddocs/CARE_AUDIT.md)にプレトラクション期間の時間が投入されてきました。ステージの数字と規律を個別ではなく一緒に読んでください。

自分で検証する

散文は安価です。すべての重要な主張には、それをチェックするコマンドが付属しています。

主張チェック
パイプが稼働している(両プレーン)curl -s https://api.withohm.dev/health && curl -s https://api.withohm.dev/ready
ヒットがリプレイされ、ヒットとして請求される同じボディを 2 回送信。2 回目のレスポンスには X-AT-Cache: HIT + X-AT-Billed-USD が含まれる
ヒットは暗号学的であり、主張ではないヒットレスポンスには X-Ohm-Receipt(署名付き JWS)が含まれる — 検証: python scripts/verify_receipt.py "<receipt>"docs/RECEIPTS.md
署名キーは公開curl -s https://api.withohm.dev/.well-known/http-message-signatures-directory
公開された制限と拒否curl -s https://api.withohm.dev/v1/public/honesty — 私たちが行わないことと、各項目を証明するエンドポイント
クロステナント節約カウンターcurl -s https://api.withohm.dev/v1/public/stats(常に estimate_only: true
レビューパスが毎晩本番環境で動作ゴールデンパスワークフロー履歴

ローカル開発者契約(安定)

役割アドレス注記
公開クライアントエントリhttp://localhost:8081/v1Rust エッジ。OpenAI ソフトウェア開発キットをここに向けます。
内部コントロールプレーンhttp://localhost:8080Python FastAPI。Rust はキャッシュミス時にここにプロキシします。見知らぬ人に渡さないでください。
認証Authorization: Bearer <ohm-api-key>ローカルブートストラップキー: sk-at-dev.env を参照)。
BYOKX-Ohm-Upstream-Key: <provider-key>env/エンタープライズ管理キーがない場合、gpt/claude のキャッシュミス時に必須。
モデル選択JSON フィールド modelmock はローカルに留まります。gpt-* / o* → OpenAI; claude-* → Anthropic; gemini-* → Google; deepseek-* → DeepSeek; kimi-* / moonshot-* → Moonshot; glm-* → Z.ai; qwen* → Qwen; grok-* → xAI(すべて OpenAI 互換、BYOK)。
from at_utility_sdk import openai_client, LOCAL_BASE_URL

client = openai_client(
    "sk-at-dev",
    base_url=LOCAL_BASE_URL,
    upstream_api_key="sk-proj-...",
)
completion = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "Hello"}],
)

クイックスタート(Docker Compose)

cd <repo-root>   # e.g. clone of iwasinnam2/ohm
copy .env.example .env
# Edit .env: set OPENAI_API_KEY for local env-fallback; keep OPENAI_BASE_URL=https://api.openai.com/v1
docker compose --profile rust up --build -d
powershell -NoProfile -ExecutionPolicy Bypass -File scripts\release_smoke.ps1
powershell -NoProfile -ExecutionPolicy Bypass -File scripts\railgun_smoke.ps1

クラウド / エージェントネイティブ実行(Docker なし): AGENTS.md を参照。

リリーススモークは、ヘルス、モックミス/ヒット、OpenAI ミス/ヒット(キーがある場合)、Rust プレーンヘッダー、使用量カウンターを検証します。Railgun スモークは、BYOK ヘッダー、seat_plus_meters、チェックアウトエンドポイントの形状を検証します。

Cursor / MCP

ローカル stdio MCP と、ストリーミング可能な HTTP 上のステートレスリモート MCP(MCP 2026-07-28 ステートレスコア)。公開ベース: https://api.withohm.dev/v1。パートナー: docs/LAUNCH_GTM.md · https://www.withohm.dev/design-partners

pip install withohm-mcp
# monorepo dev alternative: pip install -e ".[mcp]"
# stdio (Cursor local attach): set OHM_API_KEY (required). Optional: OHM_UPSTREAM_KEY, OHM_BASE_URL
# Plugin: .cursor-plugin/ + mcp.json — see docs/CURSOR.md

# Remote (stateless streamable HTTP at /mcp, default port 8091):
#   OHM_MCP_TRANSPORT=http ohm-mcp     (or: ohm-mcp-http)
# Auth is per-request: clients send `Authorization: Bearer sk-at-*`
# (falls back to OHM_API_KEY env). Host allowlist: OHM_MCP_ALLOWED_HOSTS.

ストリーミングとフェイルオーバーの誠実さ

  • 非ストリーミング チャット完了: Rust エッジは、ボディを返す前に Python アップストリーム(プライマリ、次にフォールバック URL)を再試行する場合があります。キャッシュ書き込みは、完全なレスポンスが成功した後に行われます。
  • ストリーミング チャット完了: 先頭バイト前フェイルオーバーは出荷済みです。 Python プレーンはアップストリームストリームを積極的に開き、最初のバイトの前に失敗した場合は 1 回再試行し、両方の試行が失敗した場合は誠実な HTTP エラー(200 エラーフレームストリームではない)を返します。Rust エッジは接続エラーまたは先頭バイト前の 5xx でフォールバックし、トークンストリームをチャンクごとに転送します(エッジでのバッファリングなし)。最初のバイト後のミッドストリームプロバイダーハンドオフは、クライアントの再接続なしではサポートされていません — 重要なパスでは再接続または非ストリーミングを計画してください。

環境ルール

  • ライブシークレットは .env(gitignored)にのみ存在します。
  • .env.example にはライブの OpenAI または Stripe シークレットを含めてはなりません。
  • .env を変更した後、コンテナを再作成します: docker compose up -d --force-recreate gateway
  • OPENAI_BASE_URLhttps://api.openai.com/v1 でなければならず、ウェブサイトホスト platform.openai.com ではありません。

法的境界(必須)

Web 取り込みは、英国 GDPR/CMA および米国 CFAA/CCPA の規範に基づき、公開のみかつ目的限定です。リポジトリ全体がこのフレームワーク内に留まる必要があります — docs/LEGAL.md を参照。

fetch_web_context が true の場合、クライアントは以下を送信する必要があります:

  • web_purposepublic_web_retrievalbusiness_catalogpublic_company_infojob_listings のいずれか
  • web_compliance_ack: true — 公開のみ、リード収集 / 個人ファイル / ゲート付きアクセスなしを確認
  • terms_ack / dpa_ack: truedocs/legal/ テンプレートをバインド
  • オプションの cache_control: "no_store" — 機密プロンプトの Redis 書き込みをスキップ

ライブポリシーを検査: GET /v1/compliance/policy。テンプレート: 利用規約、DPA、アップストリームチェックリストは docs/legal/ の下にあります。

アーキテクチャ

レイヤー役割
gateway-rs:8081公開エッジ: Redis シリアライゼーションプロトコルキャッシュ、プロキシ、プレーンヘッダー
Python ゲートウェイ(:8080OpenAI 互換 API、プロバイダー、レート制限、メータリング、テナント、コンプライアンスゲート
インジェストワーカー(:8090メタ検索 + 公開ページ取得 → fetch_web_context 用の編集済みマークダウン/JSON
src/at_utility/compliance/目的マトリックス、URL ゲート、robots.txt、PII 編集
src/ohm_mcp/Cursor MCP アタッチ(ohm_fetch_webohm_usageohm_chat
Redis リーダー / レプリカキャッシュ + RL; レプリカ/リーダーで GET、リーダーで SET — docs/REDIS_MESH.md
infra/Terraform + Kubernetes: 単一リージョン EKS(メッシュはフラグの背後に保持)
site/マーケティング + ドキュメント + セルフサービス /billing

テナントと請求

ブートストラップキー sk-at-dev はローカルで動作します。セルフサービス: POST /v1/billing/checkout(サイト /billing)。運用: 管理者キーで発行(AT_ADMIN_API_KEYS):

curl.exe -s -X POST http://localhost:8080/v1/admin/tenants `
  -H "Authorization: Bearer sk-at-dev" `
  -H "Content-Type: application/json" `
  -d "{\"plan\":\"payg\",\"label\":\"design-partner-1\",\"terms_ack\":true,\"dpa_ack\":true}"

停止されたテナント(POST /v1/admin/tenants/{id}/status{"status":"suspended"}、または Stripe キャンセルウェブフック)は HTTP 403 を受け取ります。

メータリングは永続的な日次台帳キーを書き込み、stripe_customer_id が設定されている場合に Stripe Billing Meters と同期します(ohm_web_fetchohm_cache_hitohm_cache_miss)。

台帳: 顧客はプロバイダーに支払います(BYOK)。顧客は Ohm シート + メーターに支払います。オプション: pip install -e ".[billing]"

テスト

pip install -e ".[dev,billing]"
pytest -q