Skip to main content

Robotics proof-of-execution SDK

Project description

ACTO

Robotics-first proof-of-execution toolkit.

Generate deterministic, signed execution proofs from robot telemetry and logs. Verify proofs via the ACTO API. Fast, gas-free verification.

PyPI version Python versions License


๐ŸŒ Links

๐ŸŒ Website actobotics.net
๐Ÿ“Š Dashboard api.actobotics.net/dashboard
๐Ÿฆ X (Twitter) @actoboticsnet
๐Ÿ“– API Docs docs/API.md
๐Ÿ“ฆ PyPI pypi.org/project/actobotics

โœจ Features

  • Python SDK - Create execution proofs locally
  • API Verification - Verify proofs via the hosted ACTO API
  • REST API - FastAPI verification service at api.actobotics.net
  • Multi-Wallet Dashboard - Phantom, Solflare, Backpack, Glow, Coinbase
  • Fleet Management - Monitor and organize your robot fleet
  • Token Gating - SPL token balance checks (off-chain)
  • Async Support - Full async/await API
  • CLI Tools - Interactive mode, shell completion

๐Ÿš€ Quick Start

Install the SDK

pip install actobotics

That's it! The SDK connects to the hosted API at api.actobotics.net.

Optional Dependencies

# With Solana integration
pip install actobotics[solana]

# With all optional features (Solana, Redis, ROS, etc.)
pip install actobotics[full]

Basic Usage

# Generate keypair
acto keys generate

# Create proof from telemetry
acto proof create \
  --task-id "task-001" \
  --source examples/telemetry/sample_telemetry.jsonl

๐Ÿ“ฆ SDK Usage

Create Proofs Locally

from acto.proof import create_proof
from acto.telemetry.models import TelemetryBundle, TelemetryEvent
from acto.crypto import KeyPair

# Generate keypair
keypair = KeyPair.generate()

# Create telemetry bundle
bundle = TelemetryBundle(
    task_id="task-001",
    robot_id="robot-001",
    events=[TelemetryEvent(ts="2025-01-01T00:00:00Z", topic="sensor", data={"value": 42})]
)

# Create proof locally
envelope = create_proof(bundle, keypair.private_key_b64, keypair.public_key_b64)

Verify & Submit via API

All proof verification must be done through the ACTO API. This ensures integrity, compliance, and enables fleet tracking.

from acto.client import ACTOClient

# Connect to hosted API
client = ACTOClient(
    api_key="acto_xxx...",           # From dashboard
    wallet_address="ABC123..."        # Your Solana wallet
)

# Verify proof via API (required)
result = client.verify(envelope)
print(f"Proof valid: {result.valid}")

# Submit proof to registry
proof_id = client.submit_proof(envelope)
print(f"Submitted: {proof_id}")

# Search proofs
results = client.search_proofs(robot_id="robot-001", limit=10)
for proof in results.items:
    print(f"  - {proof.task_id}")

# Fleet management
fleet = client.fleet.get_overview()
print(f"Total devices: {fleet.summary.total_devices}")

# Report robot health
client.fleet.report_health(
    "robot-001",
    cpu_percent=45.2,
    battery_percent=85.0
)

๐ŸŒ API Access

Use the hosted API at https://api.actobotics.net:

  1. Get an API Key at api.actobotics.net/dashboard
  2. Connect your Solana wallet (requires 50,000 ACTO tokens)
  3. Use the SDK client (recommended) or make direct API calls:
# Recommended: Use the SDK client
from acto.client import ACTOClient
client = ACTOClient(api_key="...", wallet_address="...")

Or with curl:

curl -X POST https://api.actobotics.net/v1/proofs \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "X-Wallet-Address: YOUR_WALLET" \
  -H "Content-Type: application/json" \
  -d '{"envelope": {...}}'

API Endpoints

Endpoint Description
POST /v1/proofs Submit a proof
GET /v1/proofs List proofs
POST /v1/proofs/search Search & filter proofs
POST /v1/verify Verify a proof
POST /v1/verify/batch Batch verify proofs
GET /v1/stats/wallet/{addr} Wallet statistics
POST /v1/access/check Check token balance
GET /v1/fleet Fleet overview
GET /v1/fleet/devices/{id} Device details
GET /v1/fleet/groups List device groups

๐Ÿ“– Full API documentation: docs/API.md


๐Ÿค– Fleet Management

Monitor and manage your robot fleet from the dashboard:

  • Device Overview - See all devices with status and activity
  • Custom Names - Rename devices for easy identification
  • Device Groups - Organize robots (e.g., "Warehouse A", "Production Line")
  • Health Monitoring - CPU, RAM, battery status (optional)
  • Activity Logs - View complete proof history per device
# Report device health (all fields optional)
import httpx

httpx.post(
    "https://api.actobotics.net/v1/fleet/devices/robot-001/health",
    headers={"Authorization": f"Bearer {JWT_TOKEN}"},
    json={
        "cpu_percent": 45.2,
        "memory_percent": 68.0,
        "battery_percent": 85.0
    }
)

๐Ÿ” Token Gating

API requests automatically verify your wallet holds sufficient tokens (via Helius RPC).

For manual balance checks via CLI:

# Using configured defaults (recommended)
acto access check --owner WALLET_ADDRESS

# With explicit parameters
acto access check \
  --owner WALLET_ADDRESS \
  --mint TOKEN_MINT \
  --minimum 50000 \
  --rpc https://your-rpc-url.com

Note: --mint, --minimum, and --rpc are all optional. If omitted, defaults from your configuration (environment variables or config.toml) are used.


๐Ÿ“š Documentation

Document Description
API.md REST API reference
ARCHITECTURE.md System architecture
PROTOCOL.md Proof protocol specification
SECURITY.md Security features & configuration
THREAT_MODEL.md Security threat model
CHANGELOG.md Version history & release notes
CONTRIBUTING.md Contribution guidelines

๐Ÿ› ๏ธ Self-Hosted Setup (Contributors)

Click to expand self-hosted installation instructions

If you want to run your own ACTO server or contribute to development:

Clone & Install

git clone https://github.com/actobotics/ACTO.git
cd ACTO

# Install with all dependencies including server
pip install -e ".[dev]"

Run the Server

# Start API server
acto server run

# Or with uvicorn directly
uvicorn acto_server.app:app --reload --port 8080

Run Tests

# Run tests
pytest

# Run with coverage
pytest --cov=acto --cov-report=html

# Load tests
locust -f tests/load/locustfile.py

Docker

# Run with docker-compose
docker-compose up -d

# Or build manually
docker build -t acto .
docker run -p 8080:8080 acto

Project Structure

ACTO/
โ”œโ”€โ”€ acto/              # SDK (published to PyPI)
โ”‚   โ”œโ”€โ”€ proof/         # Proof creation & verification
โ”‚   โ”œโ”€โ”€ crypto/        # Keys, signing, hashing
โ”‚   โ”œโ”€โ”€ telemetry/     # Telemetry parsing & normalization
โ”‚   โ”œโ”€โ”€ registry/      # Local proof storage
โ”‚   โ””โ”€โ”€ ...
โ”œโ”€โ”€ acto_cli/          # CLI tools (published to PyPI)
โ”œโ”€โ”€ acto_server/       # FastAPI server (NOT published)
โ”œโ”€โ”€ api/               # Vercel serverless functions
โ”œโ”€โ”€ tests/             # Test suite
โ””โ”€โ”€ docs/              # Documentation

๐Ÿ“„ License

MIT. See LICENSE.


Website โ€ข Dashboard โ€ข X (Twitter) โ€ข PyPI

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

actobotics-0.9.9.tar.gz (6.7 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

actobotics-0.9.9-py3-none-any.whl (100.1 kB view details)

Uploaded Python 3

File details

Details for the file actobotics-0.9.9.tar.gz.

File metadata

  • Download URL: actobotics-0.9.9.tar.gz
  • Upload date:
  • Size: 6.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for actobotics-0.9.9.tar.gz
Algorithm Hash digest
SHA256 10304dea2704941a6e13d93f44e4d56b90b8f3bcbcb664e51dfd3868c32af40d
MD5 8910d56260b6577b5383015e3d14e1a4
BLAKE2b-256 4a085d56fa10d2af23efce69edf45feb130022bddab9c3dbab707dc0a792a970

See more details on using hashes here.

Provenance

The following attestation bundles were made for actobotics-0.9.9.tar.gz:

Publisher: publish.yml on actobotics/ACTO

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file actobotics-0.9.9-py3-none-any.whl.

File metadata

  • Download URL: actobotics-0.9.9-py3-none-any.whl
  • Upload date:
  • Size: 100.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for actobotics-0.9.9-py3-none-any.whl
Algorithm Hash digest
SHA256 f6f2ee77633c828daf0807a58db0ba50906b3823b689dc3551881b68debab8db
MD5 4f45864c15002156cb9df2356b30c556
BLAKE2b-256 5df1441e6dd24940596e6c1d00bc4fb4b8645feebbcf700d669c95e4072623b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for actobotics-0.9.9-py3-none-any.whl:

Publisher: publish.yml on actobotics/ACTO

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page