withOhm
resmiBidang kendali lalu lintas AI (gubernur chaos): replay prompt Redis, ingest web yang patuh, buku besar org SSO, Agent Shell. Ingress kompatibel OpenAI BYOK. Cursor opsional; MCP adalah klien kompatibilitas.
Apa yang bisa Anda lakukan dengan withOhm MCP?
- Memutar ulang prompt yang di-cache — Minta AI Anda untuk mengirim ulang permintaan yang identik dan dapatkan respons yang identik byte demi byte dengan
X-AT-Cache: HIT, ditagih sebagai hit, bukan panggilan model baru. - Verifikasi tanda terima kriptografis — Minta asisten Anda untuk memeriksa JWS
X-Ohm-Receiptyang ditandatangani pada respons apa pun menggunakanverify_receipt.pyuntuk membuktikan bahwa hit tersebut nyata, bukan sekadar klaim. - Ambil konteks web publik — Gunakan
ohm_fetch_webuntuk mengambil halaman publik sebagai markdown/JSON yang disunting, dengan flag kepatuhan sepertiweb_purposedanweb_compliance_ackyang diberlakukan. - Periksa penggunaan dan penagihan — Kueri
ohm_usageuntuk melihat konsumsi terukur di seluruh meterohm_cache_hit,ohm_cache_miss, danohm_web_fetch, plus estimasi penghematan lintas penyewa. - Obrolan melalui proxy — Gunakan
ohm_chatuntuk mengirim permintaan yang kompatibel dengan OpenAI ke penyedia mana pun (OpenAI, Anthropic, Google, dll.) melalui satu URL dasar, dengan BYOK melaluiX-Ohm-Upstream-Key.
Dokumentasi
Ohm (withOhm)
Dalam satu kalimat: withOhm adalah proxy yang berada di antara aplikasi Anda (atau Cursor) dan OpenAI/Anthropic/dll. — proxy ini memutar ulang permintaan yang identik secara byte secara gratis alih-alih membayar model lagi, mengambil konteks web publik di bawah kendali kepatuhan, dan memberi Anda satu tagihan teraudit dengan tanda terima kriptografis, bukan beberapa faktur penyedia yang tidak transparan.
Pipa terukur untuk inferensi berulang yang terbuang: ingress kompatibel OpenAI, replay prompt Redis, ingest web yang patuh, tenancy SSO organisasi, dan buku besar korporat yang bersih. Untuk perusahaan, pipa yang sama adalah pengatur kekacauan untuk pengeluaran AI (wedge kanonik: docs/GEM_POSITION.md). Cursor/MCP adalah klien opsional.
Hit replay persis yang tidak menghabiskan token upstream. Konsistensi lintas penyedia. Lokalitas — pembacaan edge Redis. Nilai replay dan audit. Arahkan klien apa pun yang kompatibel dengan OpenAI (atau Ohm Agent Shell) ke satu base URL. Simpan kunci Anda atau gunakan kumpulan terkelola. Sewa pipanya; kelola kekacaunya.
Situs: https://www.withohm.dev · API: https://api.withohm.dev/v1 · Workbench: /workbench · Arsitektur: docs/ARCHITECTURE.md · Visi: docs/VISION.md · Enterprise: docs/ENTERPRISE_CHAOS.md · Gem: docs/GEM_POSITION.md · Audit perawatan: docs/CARE_AUDIT.md — disiplin pemeliharaan kebenaran yang diterapkan pada setiap klaim publik; baca sebelum menilai rasio engineering-to-traction.
Lisensi: MIT (lihat LICENSE + NOTICE). Sumber terbuka; pipa withOhm yang dihosting tetap merupakan layanan metered komersial. Nama paket/kunci mungkin masih menyebut at-utility / sk-at-* (awalan AT lama); produknya adalah withOhm.
Tahap, secara jujur
Tanpa basa-basi: withOhm berada di tahap pre-seed dan pre-traction secara desain, bukan karena kelalaian. Tabel lengkap dan aturan sumber: docs/STATUS.md.
| Fakta | Sekarang |
|---|---|
| Versi | 0.1.2 |
| Mitra desain | 0 dari target 10 tim (docs/DESIGN_PARTNERS.md — "dari nol") |
| Pendanaan institusional | Tidak ada; pra-inkorporasi (docs/distribution/INVESTOR_INTRO_TARGETS.md) |
| Wilayah | Tunggal (us-east-1); tanpa SLA kontraktual |
| Cakupan pengujian otomatis | 30 file, 215+ fungsi pengujian di tests/ (pytest -q, CI pada setiap push) |
Disiplin engineering dan audit (pengujian, tanda terima bertanda tangan, INSPECTION.md, docs/CARE_AUDIT.md) adalah tempat waktu pra-traction digunakan — baca angka tahap dan disiplin secara bersamaan, bukan salah satunya saja.
Verifikasi sendiri
Prosa itu murah; setiap klaim yang menopang beban disertai dengan perintah yang memeriksanya.
| Klaim | Periksa |
|---|---|
| Pipa aktif (kedua bidang) | curl -s https://api.withohm.dev/health && curl -s https://api.withohm.dev/ready |
| Hit diputar ulang dan ditagih sebagai hit | Kirim body yang sama dua kali; respons kedua memiliki X-AT-Cache: HIT + X-AT-Billed-USD |
| Hit bersifat kriptografis, bukan asersi | Respons hit membawa X-Ohm-Receipt (JWS bertanda tangan) — verifikasi: python scripts/verify_receipt.py "<receipt>" (docs/RECEIPTS.md) |
| Kunci penandatanganan bersifat publik | curl -s https://api.withohm.dev/.well-known/http-message-signatures-directory |
| Batasan dan penolakan yang dipublikasikan | curl -s https://api.withohm.dev/v1/public/honesty — apa yang tidak akan kami lakukan, dengan endpoint yang membuktikan setiap item |
| Penghitung penghematan lintas-tenant | curl -s https://api.withohm.dev/v1/public/stats (selalu estimate_only: true) |
| Jalur peninjau berfungsi setiap malam terhadap produksi | Riwayat workflow jalur emas |
Kontrak pengembang lokal (stabil)
| Peran | Alamat | Catatan |
|---|---|---|
| Entri klien publik | http://localhost:8081/v1 | Edge Rust. Arahkan software development kit OpenAI ke sini. |
| Bidang kontrol internal | http://localhost:8080 | Python FastAPI. Rust mem-proxy ke sini saat cache miss. Jangan berikan ini kepada orang asing. |
| Otentikasi | Authorization: Bearer <ohm-api-key> | Kunci bootstrap lokal: sk-at-dev (lihat .env). |
| BYOK | X-Ohm-Upstream-Key: <provider-key> | Diperlukan pada cache miss untuk gpt/claude kecuali kunci terkelola env/enterprise. |
| Pemilihan model | Bidang JSON model | mock tetap lokal; gpt-* / o* → OpenAI; claude-* → Anthropic; gemini-* → Google; deepseek-* → DeepSeek; kimi-* / moonshot-* → Moonshot; glm-* → Z.ai; qwen* → Qwen; grok-* → xAI (semua kompatibel 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"}],
)
Mulai cepat (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
Jalankan native cloud/agen (tanpa Docker): lihat AGENTS.md.
Smoke rilis memastikan health, mock miss/hit, OpenAI miss/hit (saat kunci tersedia), header bidang Rust, dan penghitung penggunaan. Smoke Railgun memastikan header BYOK, seat_plus_meters, dan bentuk endpoint checkout.
Cursor / MCP
MCP stdio lokal plus MCP remote tanpa status melalui HTTP streamable (inti tanpa status MCP 2026-07-28). Base publik: https://api.withohm.dev/v1. Mitra: 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.
Kejujuran streaming dan failover
- Non-streaming chat completions: edge Rust dapat mencoba ulang upstream Python (URL utama lalu fallback) sebelum mengembalikan body. Penulisan cache terjadi setelah respons penuh yang berhasil.
- Streaming chat completions: failover pra-byte-pertama telah dirilis. Bidang Python secara agresif membuka stream upstream, mencoba ulang sekali jika mati sebelum byte pertama, dan mengembalikan error HTTP yang jujur (bukan stream frame error 200) jika kedua upaya gagal; edge Rust melakukan fallback pada error koneksi atau 5xx pra-byte-pertama dan meneruskan stream token sepotong demi sepotong (tanpa buffering di edge). Penyerahan penyedia di tengah stream setelah byte pertama tanpa koneksi ulang klien tidak didukung — rencanakan koneksi ulang atau non-stream untuk jalur kritis.
Aturan lingkungan
- Rahasia langsung hanya milik
.env(gitignored). .env.exampletidak boleh mengandung rahasia OpenAI atau Stripe langsung.- Setelah mengubah
.env, buat ulang container:docker compose up -d --force-recreate gateway. OPENAI_BASE_URLharushttps://api.openai.com/v1, bukan host situs webplatform.openai.com.
Batasan hukum (wajib)
Ingest web bersifat publik-saja dan dibatasi tujuan di bawah norma UK GDPR/CMA dan US CFAA/CCPA. Seluruh repo harus tetap dalam kerangka ini — lihat docs/LEGAL.md.
Saat fetch_web_context benar, klien harus mengirim:
web_purpose— salah satu daripublic_web_retrieval,business_catalog,public_company_info,job_listingsweb_compliance_ack: true— konfirmasi publik-saja, tanpa panen prospek / dossier / akses berpagarterms_ack/dpa_ack: true— ikat template docs/legal/- opsional
cache_control: "no_store"— lewati penulisan Redis untuk prompt rahasia
Periksa kebijakan langsung: GET /v1/compliance/policy. Template: Terms, DPA, checklist upstream di bawah docs/legal/.
Arsitektur
| Lapisan | Peran |
|---|---|
gateway-rs (:8081) | Edge publik: cache protokol serialisasi Redis, proxy, header bidang |
Gateway Python (:8080) | API kompatibel OpenAI, penyedia, batas tingkat, pengukuran, tenancy, gerbang kepatuhan |
Worker ingest (:8090) | Meta-search + pengambilan halaman publik → markdown/JSON terredaksi untuk fetch_web_context |
src/at_utility/compliance/ | Matriks tujuan, gerbang URL, robots.txt, redaksi PII |
src/ohm_mcp/ | Lampiran MCP Cursor (ohm_fetch_web, ohm_usage, ohm_chat) |
| Pemimpin / replika Redis | Cache + RL; GET pada replika/reader, SET pada pemimpin — docs/REDIS_MESH.md |
infra/ | Terraform + Kubernetes: EKS wilayah tunggal (mesh dipertahankan di belakang flags) |
site/ | Pemasaran + docs + /billing layanan mandiri |
Tenancy dan penagihan
Kunci bootstrap sk-at-dev berfungsi secara lokal. Layanan mandiri: POST /v1/billing/checkout (situs /billing). Operasional: terbitkan dengan kunci admin (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}"
Tenant yang ditangguhkan (POST /v1/admin/tenants/{id}/status dengan {"status":"suspended"}, atau webhook pembatalan Stripe) menerima HTTP 403.
Pengukuran menulis kunci buku besar harian yang tahan lama dan menyinkronkan Stripe Billing Meters saat stripe_customer_id diatur (ohm_web_fetch, ohm_cache_hit, ohm_cache_miss).
Buku besar: Pelanggan membayar penyedia (BYOK). Pelanggan membayar kursi Ohm + meter. Opsional: pip install -e ".[billing]".
Pengujian
pip install -e ".[dev,billing]"
pytest -q