Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

sentientx

The hosted, project-scoped entrypoint to the sentientx robotics platform — one CLI, one MCP server, and one Python SDK over the same governed resources.

sx names governed resources, submits one durable operation, and prints a reference you can watch from any later shell. It needs no request JSON, no service URLs, no worker queues, and no locally running infrastructure.

curl -fsSL https://docs.sentientx.io/install.sh | sh

Installs sx and sx-mcp on Linux or macOS with a managed Python runtime. No pip, system Python, or administrator access is required. Open a new terminal if prompted. Run the same command again to update. Access to a sentientx project is required; see the installation guide for release availability and setup. For import sx in your own application, install sentientx into that application's Python 3.12 or newer environment separately.

Hosted operations work without local Rerun. For local RRD validation and episode outboxes, install sentientx[episodes] on a platform supported by the current Rerun SDK.

Three depths, one project

Start at the highest level that expresses the outcome. Going deeper reveals control; it does not create another project or bypass the platform's gates.

  1. Hosted builder. Describe what the robot should do, where it should work, its limits, and what counts as success. The platform agent plans the next step and keeps its skills, tool calls, evidence, and durable receipts inspectable.
  2. Your coding agent. Connect a local workspace to the same project. The sx MCP server supplies governed reads and mutations across Experience, Worlds, Autonomy, and Fleet, and an installed project skill keeps the agent working in outcome language.
  3. Your program. Import sx when the workflow belongs in code. The SDK exposes the same project identity, domain values, operation receipts, and fail-closed gates.

There is no advanced mode and no state conversion between these depths. A task, application, evaluation, deployment, or operation created through one surface is the same governed resource the other two read.

Authenticate and connect

Authenticate once in the hosted browser, then bind the current workspace to one explicit project. The CLI stores its revocable credential in your operating system's credential store; it never prints the key or writes it into the workspace.

sx auth login
sx project list
sx project connect --project <project-uuid>

sx project connect preserves any other MCP servers already configured, adds the project-scoped sx-mcp server to Claude Code's .mcp.json and Codex's .codex/config.toml, and installs the project skill for both coding agents. It writes the non-secret project id, workspace path, and profile, never your credential. Restart or reload the agent session after connecting so it discovers the local tools and skill.

Author a local world preview

Keep authored inputs and one explicit preview export in the connected world folder. A preview can be a self-contained static GLB, or a standard 3D Tiles 1.1 tileset.json whose relative content paths select bounded self-contained GLB leaves and child JSON pages. Each JSON page root selects a coarse GLB and uses REPLACE refinement. Declare the root, authored source paths, and required license in world.sx.yaml:

schema: sx.world-authoring/v1
name: Packing bench
preview: build/preview.glb
sources:
  - author_scene.py
license_id: LicenseRef-Proprietary

Then create, sync, and open the retained project draft:

sx worlds draft init world.sx.yaml
sx worlds draft sync world.sx.yaml
sx worlds draft open world.sx.yaml

sync uploads missing preview members from leaves to root, then atomically accepts the complete root. A retry reuses admitted content, and changing one tile uploads that tile and its changed ancestor pages. Source files, agent conversations, and model credentials stay local. A stale sync tells you to inspect the hosted head and run sx worlds draft adopt <reviewed-revision> before a deliberate next sync. The command refuses if that head moved again. Adoption uploads nothing and changes no source files. This preview is visual only; it is not a published environment or proof of simulation readiness.

Use sx auth status to inspect the current identity, and sx auth logout to revoke this CLI's key before removing it locally. SX_API_KEY is the explicit non-interactive override for CI and enrolled machines, not the human setup path.

Operations are durable

Every long-running verb returns a pillar/kind/id reference. The work continues when the CLI disconnects.

OPERATION=$(sx worlds evaluate generalist-picker --task "Pick and place")
sx watch "$OPERATION"

Reattach later with sx watch, inspect once with sx status, fetch the terminal value with sx result, or stop work explicitly with sx cancel "$OPERATION" --reason "...".

Capture runs from the same hosted surface once a station has been enrolled and commissioned:

CAPTURE=$(sx experience capture --task "Pick and place" --with yubi --episodes 100)
sx watch "$CAPTURE"

Station enrollment, calibration, hardware readiness, and fail-closed robot control stay edge-local. Submitting work to an already-enrolled station requires none of them.

Working with a coding agent

Give the agent the outcome and the accountable decisions, not an implementation recipe:

Build a canary-ready application that sorts inspected connectors into three bins.
Keep human approval for task publication and promotion. Show the evidence and durable
receipt behind each completed gate.

The skill keeps the conversation at builder altitude, chooses the owning pillar, and uses MCP for inspection and action. Ask to see tool inputs or receipts when debugging; ask for SDK code when the workflow needs to become a program.

Python SDK

The Python API keeps the same resource and operation model while returning canonical domain types:

from sx import Sx, WorldEvaluation


async def evaluate() -> WorldEvaluation:
    sx = Sx()
    task = await sx.experience.tasks.spec("Pick and place")
    application = await sx.autonomy.applications.get("generalist-picker")
    operation = await sx.evaluate(application, task=task)
    print(operation.ref)  # save this to reattach later
    projection = await operation  # generated Worlds verdict + scorecard
    print(projection.verdict)
    return await sx.worlds.canonical_evaluation(operation)

sx.operation(ref) reattaches without I/O. Status, ordered updates, terminal result retrieval, and cancellation route to the pillar that owns the operation. Closing the local SDK object never cancels server work.

Awaiting the operation returns the generated protocol WorldEvaluation projection. For an application evaluation, sx.worlds.canonical_evaluation(operation) follows its exact canonical_run content reference and returns the canonical sx_worlds.WorldEvaluation domain value after verifying the projection against Catalog evidence.

Deploying takes one complete application manifest — a bare checkpoint is not a deployable unit:

from pathlib import Path

import yaml

from sx import Sx, application_manifest_from_dict


async def deploy(manifest_path: Path):
    document = yaml.safe_load(manifest_path.read_text(encoding="utf-8"))
    manifest = application_manifest_from_dict(document)

    sx = Sx()
    operation = await sx.deploy(manifest)
    print(operation.ref)  # persist this to reattach from another process
    return await operation

sx.deploy(manifest) executes or reuses the typed build graph, assembles one exact RobotApplication, obtains Worlds and Fleet qualification, requires one approval per declared task, and asks Fleet for an atomic rollout. Any failed gate is the operation result; the SDK never substitutes a partial deployment.

Robot description assets

The package ships the SDK, not the robot geometry. URDF, MJCF, and mesh files are read from a local tree or an asset store and cached locally on first use, each verified against the digest the registry's manifest declares for it; every file a registered robot's description names is in that manifest.

Naming an embodiment needs nothing on disk:

from sx_embodiments import embodiments

arm = embodiments["franka"]     # identity, joints, cameras, limits — no files needed

Reading its description bytes does. A hosted asset store and its read credentials are not issued yet; until they are, bytes come from a local tree named by SX_EMBODIMENTS_ASSETS. The SDK already reads a store configured like this:

export SX_EMBODIMENTS_ASSET_STORE=https://<your-asset-store>
export SX_EMBODIMENTS_ASSET_STORE_TOKEN=<your read token>

Objects are fetched by digest, verified against the embodiment's declared sha256 and size, and cached under ~/.cache/sx-embodiments/sha256/; materialize(embodiment) returns a directory holding exactly that robot's description and the meshes it names. Without a tree or a store, anything that needs bytes raises AssetsUnavailableError naming both variables, and a refused or missing object raises the same error. It never silently substitutes or degrades.

Analytics

MCP analytics is optional and off by default. Set both POSTHOG_PROJECT_TOKEN and POSTHOG_HOST in the sx-mcp process environment to capture MCP initialization, tool listings, tool calls, agent intent, and failures. Leaving both absent disables analytics; a partial configuration fails at startup rather than silently dropping events.

License

Copyright © sentientx. All rights reserved. This is proprietary software; use is governed by your agreement with sentientx.

Metadata

Release files for sentientx 0.1.0rc1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sentientx 0.1.0rc1
File Size Uploaded Provenance Actions
sentientx-0.1.0rc1.tar.gz 1.7 MB Without provenance Details for sentientx-0.1.0rc1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for sentientx 0.1.0rc1
File Interpreter ABI Platform Actions
sentientx-0.1.0rc1-py3-none-any.whl Python 3 none any Details for sentientx-0.1.0rc1-py3-none-any.whl

Total release size: 3.7 MB

Release files / sentientx-0.1.0rc1.tar.gz

Download URL sentientx-0.1.0rc1.tar.gz
Size 1.7 MB
Tags Source
SHA-256 checksum
How to use checksums
5457a3e2780603611740c995752654b8936f9e6dcbf8bcf0a6b0a359897c1af6
BLAKE2b-256 checksum
How to use checksums
d5354efdd2c54b891e0c2d5996cbb164de02e0639dba00df81f7790ff29fa5d5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / sentientx-0.1.0rc1-py3-none-any.whl

Download URL sentientx-0.1.0rc1-py3-none-any.whl
Size 1.9 MB
Tags Python 3
SHA-256 checksum
How to use checksums
b546e23f6f81088fd9d359eb34a472b81cd95c81bf7d7ca28e3d6cad0c9dcfb0
BLAKE2b-256 checksum
How to use checksums
9a8a700a6cfd51e2ee7818d8284cf29608c52eb0efb2301a72d561776a2b3f88
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for sentientx 0.1.0rc1

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.

Release history Release notifications | RSS feed

This release
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page