@cspeach/cli
v1.1.20
Published
CSPeach — AI-assisted ABAP development CLI. Direct SAP access, 34 skills, safety gates.
Maintainers
Readme
CSPeach
AI-assisted ABAP development CLI. 35 skills, direct SAP access, safety gates the model cannot bypass.
Install
npm install -g @cspeach/cliRequires Node.js 20+. After install:
cspeach login # opens browser, authorizes this machine
cspeach config add-sap
cspeach # interactive REPLWhat it does
CSPeach runs an AI consultant against your own SAP. Pick a skill (or type a prompt — the classifier picks one for you):
/abap-spec-gap find missing questions before any code is written
/abap-design object list + dependency DAG
/abap-estimate component-level hours with optimistic / realistic /
pessimistic ranges
/abap-cca estate-wide custom-code analysis for S/4HANA
/abap-upgrade-scan baseline scan against the readiness variant
/abap-upgrade-fix interactive fix loop with per-object approval
/abap-incident short dump → fix → verify → handover
cspeach --help full skill list (34 total)Every turn runs locally on your machine. SAP source and SAP data flow through
api.cspeach.dev to the LLM. The proxy logs request metadata (skill, model,
token counts, latency) for billing; the message body is forwarded to
Anthropic and not stored on the proxy. SAP credentials never leave your
machine.
Safety
- Snapshot gate — every SAP write auto-snapshots first
- SAP approval gate — SAP-write and transport tools (
sap_set_source,sap_create_object,sap_delete_object,sap_update_method,sap_activate,sap_transport_*) require a single-use JWT bound to (object, operation); the model sees a plan, you approve each change - Optional tools default OFF — filesystem, shell, web, and subagent
tools are invisible to the model unless you set
CSPEACH_TOOL_<NAME>=onin the environment - Batch-write interrupt — any second mutating call in a single turn (Rule 8, any tool category) pauses for an explicit yes/no before it runs
- Verify gate — every SAP write is syntax-checked; activation blocked on errors
- Transport discipline — all SAP writes land in your session transport;
$TMPis opt-in
Ten Forge Rules are non-negotiable. Full philosophy in the CSPeach Principles
preamble shown to the model every turn.
Cost transparency (since 0.7.0)
Every turn shows what it cost. After each model call you see:
session abc123 │ S4H │ /abap-explain │ 2 turns │ 487 tok │ $0.07 │ session: $0.18 │ 3.6stok= tokens billed this turn (input + output + cache)$= this turn's costsession:= cumulative across the open session/costshows a per-skill / per-tool breakdown/compactsummarises older turns when context gets large (cuts subsequent-turn cost ~80-90%)auto_compactin~/.cspeach/config.tomlfires/compactautomatically over a configurable threshold
On /exit you get a session summary + the cspeach --resume <id> command in plain text so you can pick up where you left off.
UI modes
An interactive terminal gets the standard display (the Ink frame). /ui auto (the default) picks it for you; /ui ink asks for it explicitly. Both save to ~/.cspeach/config.toml under [ui] and apply after a relaunch.
One-shot runs (cspeach "<prompt>"), piped input or output, and CI get plain line output automatically.
The classic display is retiring. A saved ui.rendering = "classic" is no longer used: the next interactive start switches it to auto and says so once. If you need classic for one launch, set the environment variable CSPEACH_UI=classic before starting cspeach.
Configuration
~/.cspeach/config.toml is created on first cspeach config add-sap:
proxy_url = "https://api.cspeach.dev"
default_model = "claude-opus-4-7"
[sap.S4H-DEV]
host = "sap-dev.company.com"
port = 44300
client = "100"
useSsl = true
username = "S.LAEEQ"SAP passwords are stored in your OS keychain.
Common commands
cspeach login sign in to api.cspeach.dev
cspeach whoami show signed-in identity + plan/trial
cspeach logout clear local auth
cspeach config add-sap add a SAP system
cspeach doctor diagnose install + connectivity
cspeach --resume resume a prior session
cspeach --upgrade pull the latest CLI release
cspeach --versionTroubleshooting
If cspeach doctor fails:
auth— runcspeach loginagainkeychain— Windows Credential Manager / libsecret missing; CSPeach falls back to per-session prompts, slower but functionalsap— host unreachable; check VPN + the host/port in config
If the REPL hangs on first prompt, check https://api.cspeach.dev/health.
Working on team projects (contributors only)
cspeach team … and the /team/ page are built on two sibling packages in this
repo:
register-core/— the merge: records in, one picture outsap-client/— the SAP calls, includingatcRunSet
The CLI depends on them as file: links, and pnpm copies their dist/
into node_modules at install time. Neither dist/ is in git. So a fresh
checkout, or any checkout where somebody changed one of them and did not
rebuild, runs the CLI against whatever was copied last — usually a
TypeError: … is not a function in the middle of a cspeach team refresh.
src/register/__tests__/linked-packages.test.ts is the tripwire. When it fails
with "The linked packages are out of date", run the recipe below.
The recipe
Git Bash:
cd sap-client && npm run build
cd ../register-core && ../cspeach-cli/node_modules/.bin/tsc
cd ../cspeach-cli && pnpm installWindows (PowerShell or cmd):
cd sap-client
npm run build
cd ..\register-core
..\cspeach-cli\node_modules\.bin\tsc.CMD
cd ..\cspeach-cli
pnpm installThen check the link really took:
grep -c ruleIdFromAtc cspeach-cli/node_modules/@cspeach/register-core/dist/rules.js # ≥ 1
grep -c atcRunSet cspeach-cli/node_modules/@cspeach/sap-client/dist/adt-client.js # ≥ 1If either prints 0, run pnpm install --force in cspeach-cli/.
Notes:
npm run builddoes not work inregister-core/in this checkout — its devDependencies are not installed. Build it with the CLI's own compiler, as above.sap-client/builds normally.dist/index.jsis only a re-export barrel, so grep a real module (dist/rules.js,dist/register.js) when you check a new name landed.pnpm installrewrites one path separator incspeach-cli/pnpm-lock.yaml. That is noise. Restore it before you commit:git checkout -- cspeach-cli/pnpm-lock.yaml.- The viewer reads
register-corefrom SOURCE (a Vite alias) and needs none of this. - Both packages are unpublished.
prepublishOnlyblocksnpm publishof the CLI while either dependency is still afile:link; they have to be published and the versions pinned before a CLI release.
Links
- Landing: https://cspeach.dev
- Contact: [email protected]
- LinkedIn: @laeeqsiddique
License
Proprietary. Copyright (c) 2026 Cremencing Solutions. All rights reserved. Free to use under your active CSPeach plan; not free to redistribute, fork, or sublicense. Commercial / OEM licensing: [email protected].
