Architecture
Both keep your ABAP source in your environment.
Pick the one that matches your controls.
The two planes
CSPeach traffic splits into two independent planes that share only one endpoint: your CLI. The LLM plane handles AI calls and skill bundles. The SAP plane handles ABAP. They never cross.
Fast lane — today, default Available today
The developer runs cspeach from their laptop. ADT REST goes
straight to SAP, in-process via @cspeach/sap-client. SAP
credentials (user/password or X.509) stay in the laptop's OS keychain.
CHANGE_LOG shows the real developer — not a bridge
user, not a certificate proxy. The same audit trail your SAP team
already runs on every other developer action. No XSUAA to configure,
no Cloud Connector to deploy, no Destination Service to maintain.
BTP lane On the roadmap — design ready, build in progress
A small wrapper in your own BTP Cloud Foundry subaccount. The wrapper uses the same standard BTP services your team already uses for any custom extension:
SU01 and CHANGE_LOG audit —
not a bridge user.
The wrapper will be published open-source when the build is complete.
ADT REST traffic stays inside the customer's BTP tenant — it never
crosses cspeach.dev or fly.dev. Prompts
sent to the LLM travel the LLM plane — the managed proxy by default,
or direct to Anthropic in BYOK mode (available now);
your AI Hub once that mode ships — see the FAQ for the breakdown.
Roadmap: optional MCP-client mode for customers who deploy SAP's ABAP MCP Server (GA TechEd 2025).
Bring your own key Available today
Set your organization's Anthropic key once. From then on every developer's prompts go straight to Anthropic — on your key, your bill, your contract. The CSPeach proxy is never on the prompt path.
Stored AES-256-GCM encrypted and bound to your org,
never logged, shown only as sk-ant-…•••• with a
fingerprint. Rotate or revoke any time.
An owner sets the key in the portal. Every developer's CLI pulls it at
cspeach login into their OS keychain — no keys shared over
chat, no per-seat copy-paste.
At runtime the CLI calls api.anthropic.com directly. Your
prompts and the model's responses never transit CSPeach.
The proxy serves skills, auth and billing only.
Usage lands on your Anthropic contract — your rate limits, your invoicing, your data-retention and zero-retention terms apply, end to end.
Trust boundaries
| Concern | Wrapper (open source, customer-deployed) |
Fly proxy (closed, CSPeach-owned) |
|---|---|---|
| Anthropic / OpenAI routing | — | ✓ |
| BYOK key handling | — | ✓ |
| AI Hub mode (future) | — | ✓ (routes to customer's AI Hub URL) |
| Skill content + signing | — | ✓ |
| Classifier (Haiku) | — | ✓ |
| Spend caps, billing, customer DB | — | ✓ |
| GitHub OAuth / device auth | — | ✓ |
| XSUAA OAuth2 / JWT validation | ✓ | — |
| Destination Service binding | ✓ | — |
| Cloud Connector binding | ✓ | — |
| ADT REST forwarding to SAP | ✓ | — |
| Scope / role enforcement | ✓ | — |
| Audit log of SAP operations | ✓ | — |
| ABAP source code in flight | ✓ (transit only, in customer tenant) | — |
The wrapper has no business logic. It validates JWT, applies scope rules, forwards to ADT, returns the response. A competent reviewer can read the wrapper end-to-end in roughly two hours.
Architect FAQ
Only when you ask a skill to use it. The CLI's skills (/abap-explain, /abap-review, /abap-refactor and others) read the code locally via ADT, then include it in the LLM prompt so the LLM can do the work. In managed mode (today's default), those prompts transit our Fly proxy on their way to Anthropic.
ADT REST traffic itself — read object, write source, ATC, activation, transport — always goes direct laptop → SAP and never transits our proxy in any mode.
Source your team doesn't share with a CSPeach skill never leaves SAP. To keep prompt contents off our proxy too, BYOK mode (available now) routes the LLM call direct from laptop to Anthropic; SAP AI Hub mode (on the roadmap) does the same to your AI Core.
CSPeach has two LLM modes available today (Managed and BYOK) and one more on the roadmap, with different data-residency trade-offs:
pjq/sap-ai-core-llm-proxy) because SAP AI Core doesn't natively speak the Anthropic Messages API.Your prompts and the model's responses: never. In BYOK mode the CLI calls api.anthropic.com directly — that traffic does not pass through any CSPeach service.
What CSPeach still handles:
What CSPeach does not see in BYOK mode: your model usage and spend. Because inference goes straight to Anthropic, your token usage and billing run on your Anthropic contract — not metered by us.
In your own BTP Cloud Foundry subaccount. It uses standard BTP services — nothing custom or non-standard. The wrapper is small enough to read end-to-end in roughly two hours; the source will be published open-source when the build is complete. Currently on our roadmap — see the BTP lane section above.
The wrapper uses XSUAA + Principal Propagation; supports Azure AD, Okta, SAP IAS, anything XSUAA can federate to.
Principal Propagation passes the real user identity to SAP.
SU01 and CHANGE_LOG see the developer,
not a bridge user.
Yes — point CSPeach at your own SAP AI Core via the AI Hub mode, with the translation proxy noted above. Local-only LLM (Ollama / vLLM) is on the roadmap but not yet supported for skill workflows.
Tell us, and we'll let you know.