Sumac (sxmc)
Sumac makes AI assistants stop guessing how your tools work.
It inspects the real tools already on your machine, turns them into structured profiles, and uses that knowledge to generate AI-host startup docs, client config, MCP wrappers, and reusable discovery artifacts from one Rust binary.
Stable Product Path
If you only learn four commands, learn these:
What they mean:
sxmc setup: onboard the common tools a repo usessxmc add <tool>: teach Sumac and your AI hosts one more CLIsxmc status: see what your AI knows, what is stale, and what to do nextsxmc sync: reconcile saved profiles and generated host artifacts as tools change
Why It Exists
Without Sumac, the same capability usually gets rebuilt several times:
- a skill adapter for one agent
- a JSON-RPC script for one MCP server
- a thin shell wrapper for one API
- per-host startup docs and config files for AI tools
Sumac collapses that into one installable binary (sxmc) with four core flows:
Skills -> MCP server
MCP server -> CLI
API -> CLI
CLI -> AI startup surfaces
That means less glue code, narrower MCP discovery, fewer retry turns, and much less repeated setup across Claude Code, Cursor, Gemini CLI, Copilot, Codex-style tools, and generic MCP clients. The CLI command is sxmc — short to type, same letters as the brand.
Install
Other channels:
- GitHub Releases: prebuilt archives with checksums
- npm wrapper:
packaging/npm - Homebrew formula:
packaging/homebrew/sxmc.rb
Quick Start
Serve local skills over MCP:
Inspect and call any MCP server from the terminal:
Use a baked, token-efficient MCP workflow:
Run an API as a CLI:
Turn a CLI into startup-facing AI artifacts:
Use sxmc first when the surface is unknown:
inspect cli executes a real command via subprocess spawn. It can inspect
installed binaries or explicit executable paths, but it does not see shell-only
aliases or functions from your interactive shell.
inspect batch --from-file reads one command spec per line. Blank lines and
lines beginning with # are ignored, trailing whitespace is trimmed, and inline
arguments are preserved, so lines like git status or "cargo" build work as
full command specs.
For structured batch input, .yaml / .yml and .toml files can define tools
with per-command depth overrides. Example YAML:
tools:
- command: git
depth: 1
- command: cargo
When a structured batch file sets depth: 1, full JSON output exposes nested
profiles under subcommand_profiles. Compact output keeps the summary smaller
and reports only counts like nested_profile_count.
Recent inspection hardening:
sxmc inspect cli ghnow recovers top-level flags as well as grouped subcommandssxmc inspect cli rustuppreserves global options like--verbose,--quiet,--help, and--versionsxmc inspect cli python3avoids treating environment variables as subcommandssxmc inspect cli node --depth 1keeps theinspectsubcommand while using a cleaner runtime summary
Generate shell completions:
Practical Wins
sxmc stdio "<cmd>" --listreplaces ad hoc JSON-RPC client scripts for MCP discovery.sxmc mcp grep "file"searches across baked MCP servers, which is hard to reproduce cleanly with one-off tooling.sxmc scancatches hidden Unicode, dangerous permissions, and prompt-injection patterns that plaingrepmisses.sxmc inspect cli ...plussxmc init ai ...turns per-host AI setup into generated, reviewable artifacts.sxmc doctormakes the next move explicit for agents and humans: unknown CLI, unknown MCP server, unknown API, local skills you want to serve, or startup setup.sxmc inspect batch ...amortizes inspection startup when you need several CLI profiles in one pass.sxmc inspect cache-statsexposes profile-cache size and entry counts so repeated agent lookups are observable instead of opaque.sxmc inspect cache-invalidate ...andsxmc inspect cache-clearlet you recover from stale inspection state without manual cache surgery.
The current validation docs capture the real-world comparison set, token/turn estimates, and hidden retry-cost analysis.
Stability
The product name is Sumac. The command stays sxmc.
The maintained support boundary for the upcoming 1.0.0 line is:
- stable onboarding and maintenance commands:
sxmc setupsxmc addsxmc doctorsxmc statussxmc sync
- stable machine-readable output contracts for those onboarding and maintenance commands
- stable host-selection aliases such as
--clientand--host - additive evolution for richer JSON output instead of silent shape rewrites
See:
Command Overview
sxmc setup/sxmc add: first-run onboarding and one-tool onboardingsxmc status/sxmc sync: maintained-state view and reconciliation loopsxmc doctor: startup-discovery health and repair guidancesxmc serve: expose skills as stdio or HTTP MCPsxmc skills: list, inspect, run, and generate skillssxmc stdio/sxmc http: raw MCP bridge and debugging layersxmc mcp: baked daily-use MCP workflowsxmc api/sxmc spec/sxmc graphql: API-to-CLI bridgesxmc scan: security scanning for skills and MCP surfacessxmc inspect/sxmc init/sxmc scaffold: CLI-to-AI inspection and scaffoldingsxmc doctor: startup-discovery status plus recommended first commandssxmc inspect batch: inspect several CLIs in one invocationsxmc inspect cache-stats: inspect cached profile inventory and sizesxmc inspect cache-invalidate/sxmc inspect cache-clear: selectively invalidate or fully reset cached CLI profilessxmc bake: saved connectionssxmc completions: shell completion generation
Safety and Reliability
- preview-first AI artifact generation
- low-confidence CLI profiles are blocked from startup-doc generation unless explicitly overridden
- managed markdown/TOML blocks instead of wholesale overwrites
- recursive CLI inspection with
sxmc inspect cli --depth 1 - deeper recursive CLI exploration is available with larger values like
--depth 2for multi-layer CLIs such asgh - compact CLI inspection with
sxmc inspect cli --compactfor lower-context summaries - batch CLI inspection with
sxmc inspect batch --parallel ...when you need several profiles in one shot - interactive inspections now emit lightweight stderr progress notes on cache misses and slower supplemental probes
- generated docs and skill scaffolds now surface larger CLI inventories with counts instead of hiding everything after the first few subcommands
- CLI inspection profiles are cached so repeated agent lookups do not keep reparsing unchanged binaries
- cache inventory is visible with
sxmc inspect cache-stats - cached CLI profiles can be invalidated selectively with
sxmc inspect cache-invalidate <tool>or reset entirely withsxmc inspect cache-clear - cleanup support with
sxmc init ai --remove - CLI inspection now supplements sparse help output with
manpages without clobbering richer--helpsurfaces - atomic bake persistence
- bake create/update now validate sources by default, with
--skip-validatewhen you intentionally want to persist a broken or offline target - bake validation errors now include source-type-specific guidance for stdio, HTTP MCP, OpenAPI, and GraphQL targets
- invalid
--from-profile/inspect profileinputs now explain thatsxmcexpected a real CLI surface profile fromsxmc inspect cli ... inspect clitargets must be real executables onPATH(or explicit paths), not shell-only aliases or functions- baked stdio configs can pin a base directory for portable relative paths
- configurable timeouts for networked commands
- HTTP MCP guardrails for max concurrency and request body size
- stateful MCP workflows supported through
sxmc mcp session - this repo now ships generated
AGENTS.md,CLAUDE.md,GEMINI.md, Cursor rules, and Copilot instructions fromsxmcitself
Docs
- Usage: install, daily workflows, MCP usage, CLI-to-AI, completions
- Architecture: module map, data flow, and design boundaries
- Demo: short scripted demo path for terminal recordings
- Operations: hosting, release process, branch policy, distribution
- Validation: tests, smoke checks, compatibility, token/turn findings
- Product Contract: explicit support boundary
- Stability: what
1.0.0will promise, what evolves additively, and what remains out of scope - CLI Surfaces: CLI-to-AI model, profile contract, write policy
- CLI to AI Compatibility: host-by-host coverage matrix
Development
Use the validation flow before release:
License
MIT