smx
smx is a small human/agent-friendly companion for the official SpaceMolt v2 client.
The official spacemolt binary remains authoritative for API models, auth and sessions. smx adds safer ergonomics without maintaining a second client stack.
What it adds
- friendly aliases and kebab-case compatibility,
sell-all,nearbyand combined mission views,- typo suggestions without automatic execution,
- passthrough to every official v2 command,
- lazy tactical cards through
smx guide, - canonical docs/gameplay MCP profiles through
smx mcp, - isolated gameplay profiles for concurrent players/agents,
- parallel
fleetstatus and dock-safety checks, - conservative read-only
watchplus JSON field projection, - local diagnostics and verified managed-backend updates.
Install
The installers put smx on the user PATH through uv (when available) or pipx and keep the managed official backend in smx private state. Both installers use smx backend update, which verifies the official release digest and version before atomic replacement.
Windows PowerShell:
.\install.ps1
Linux/macOS:
./install.sh
Use -SkipBackend / --skip-backend if the official client is managed separately. After the tool installer updates PATH, open a new terminal and verify:
smx paths
smx --help
Manual install:
cd spacemolt/smx
python -m pip install .
# or: pipx install .
Set SMX_BACKEND when the official binary is not discoverable as spacemolt.
Common commands
smx status
smx nearby
smx missions --json
smx sell-all --dry-run
smx sell-all --keep fuel_cell,mission_widget
smx guide combat
smx guide combat --live
smx profiles
smx -p gremlin status
smx fleet
smx fleet check
smx --fields player.username,ship.fuel status
smx watch status --count 3 --interval 5
smx doctor
smx doctor --online
smx backend check
smx backend update
smx mcp
smx mcp gameplay
smx mcp docs --json
# Unknown smx commands pass through to official v2:
smx drone/list
smx shipping/active
Invariants
- Live v2 wins. Official v2 CLI/OpenAPI and live game state outrank local cards.
- No second auth/API stack.
smxcomposes official commands instead of reimplementing mechanics, retries or response models. - No fuzzy auto-execution. Unknown commands may get suggestions, never automatic correction.
- Knowledge stays lazy. Bundled cards load only when requested;
--liveasks the current server guide. - MCP roles stay separate. Docs MCP is for development; the full v2 preset is for gameplay.
- Credentials stay outside worktrees. Default sessions live in private smx state.
- Parallel players use separate session files. They never race on the official client's shared
activeAccount.
Gameplay profiles and fleet
smx profile migrate gremlin
smx profile add claude
smx profile login claude ClaudeBot
smx profile use gremlin
smx profiles
smx -p gremlin status
smx -p claude status
smx fleet
smx fleet --json
smx fleet --only-undocked
smx fleet check
profile login prompts for the password; automation can use --password-stdin. Each profile receives a separate SPACEMOLT_SESSION path, so concurrent processes do not change each other's active account.
fleet check exits non-zero when a configured profile fails status or is undocked. A process-wide explicit SPACEMOLT_SESSION is rejected in fleet mode because it would defeat isolation.
Removing a profile deletes stored credentials and requires explicit confirmation:
smx profile remove claude --yes
Watch and projection
--fields requests official JSON and returns only selected paths:
smx --fields player.username,ship.fuel,ship.cargo_used status
watch repeats only commands classified as read-only:
smx watch status
smx watch status --interval 5 --count 6 --fields player.username,ship.fuel
Mutating commands are refused rather than repeated accidentally. get_notifications is watchable only with clear=false.
Backend maintenance
smx doctor
smx backend status
smx doctor --online
smx backend check
smx backend update
Managed updates only use official SpaceMolt/client-v2 releases. Before replacing the backend, smx selects the matching asset, requires its published SHA-256 digest, verifies the download, executes --version, then replaces the binary atomically. An explicit SMX_BACKEND override is never silently replaced.
Tactical cards and MCP
smx guide
smx guide combat
smx guide --search tackle
smx guide combat --json
smx guide combat --live
smx mcp gameplay # https://game.spacemolt.com/mcp/v2?preset=full
smx mcp docs # https://game.spacemolt.com/mcp/docs
Cards are short tactical reminders, not a frozen game manual. When building/changing wrappers, query the docs MCP for exact contracts. See DEVELOPMENT.md.
Local state and credentials
| Platform | Default smx state |
|---|---|
| Windows | %LOCALAPPDATA%\smx |
| Linux | $XDG_STATE_HOME/smx, or ~/.local/state/smx |
| macOS | ~/Library/Application Support/smx |
Default session state lives under that directory; profiles use profiles/<name>/session.json, and the managed backend is shared under bin/.
Overrides:
SMX_PROFILE: profile for this process,SMX_STATE_DIR: whole smx state directory,SPACEMOLT_SESSION: exact session file, highest session-path priority,SMX_BACKEND: backend executable, higher priority than managed/PATH lookup.
The official client stores credentials in session JSON and uses mode 0600 where supported. Never commit or share session files.
Requirements
- Python 3.14+
- official
SpaceMolt/client-v2CLI, managed by smx or supplied throughSMX_BACKEND - no Python runtime dependencies
Inspiration
The UX borrows ideas from vcarl/sm-cli, CoinAnole/spacemolt-cli and rsned/spacemolt, while keeping the official v2 client as the source of truth.
Published package
A public PyPI release is prepared through the SMX packaging workflow. After the first successful publish, uv tool install spacemolt-smx installs the smx command. Until then, use the existing install.sh / install.ps1 scripts above.
Metadata
Release files for spacemolt-smx 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| spacemolt_smx-0.1.0.tar.gz | 37.9 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| spacemolt_smx-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 69.2 kB
Release files / spacemolt_smx-0.1.0.tar.gz
| Download URL | spacemolt_smx-0.1.0.tar.gz |
|---|---|
| Size | 37.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2d35309825116857e4232f2d254be9fe2df37a4d7de50d0a5fa8c7e7fe3653ad
|
|
BLAKE2b-256 checksum How to use checksums |
2f6978a8ed3ae320a5c0c28c1582d417c497582b35a6b37380c83a548b89deb4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / spacemolt_smx-0.1.0-py3-none-any.whl
| Download URL | spacemolt_smx-0.1.0-py3-none-any.whl |
|---|---|
| Size | 31.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
89be6e91c5256e5a8fcb3aae84fed6971520aa447b21549adc589233c5ec3413
|
|
BLAKE2b-256 checksum How to use checksums |
002733a6967ccaefdfa24f593b2243b33ed7f3103ca0302b4df4c3cfb191f18b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for spacemolt-smx 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.