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 still travel the LLM plane (the managed proxy today;
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).
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 or SAP AI Hub modes route the LLM call direct from laptop to Anthropic or your AI Core respectively — both on the roadmap.
CSPeach has one LLM mode shipping today (Managed) and two 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.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.