Usage Modes

RAPS offers six different ways to interact with Autodesk Platform Services. Choose the mode that best fits your workflow.

At a Glance

ModeBest ForKey Features
CLIScripts, automationFull command set, piping, exit codes
Interactive ShellLearning, explorationTAB completion, hints, history
Python BindingsPython integrationNative library, type hints, exceptions
GitHub ActionsGitHub CI/CDPre-built action, matrix builds
DockerContainerized workflowsNo install, isolated, multi-arch
MCP ServerAI assistantsNatural language, Claude/Cursor

CLI Mode

The standard command-line interface for scripts and automation.

# One-liner operations
raps bucket list --output json | jq '.[] | .bucketKey'

# Scripting with exit codes
if raps auth test; then
    raps object upload my-bucket model.rvt
fi

Key features:

  • Full command set (100+ commands)
  • Multiple output formats (JSON, YAML, CSV, table)
  • Standardized exit codes for scripting
  • Shell completions (bash, zsh, fish, PowerShell)

📖 CLI Mode Documentation →


Interactive Shell

REPL environment with TAB completion and parameter hints.

$ raps shell

Welcome to the RAPS interactive shell!
raps> bucket [TAB]
create    delete    get       list

raps> bucket create <BUCKET_KEY>
raps> bucket create my-test --retention transient
✓ Bucket created: my-test

Key features:

  • TAB completion for commands and flags
  • Gray parameter hints show required/optional args
  • Command history with ↑/↓ navigation
  • Built-in help command

📖 Interactive Shell Documentation →


Python Bindings

Native Python library for programmatic access.

from raps import Client

client = Client.from_env()

# List buckets
for bucket in client.buckets.list():
    print(f"{bucket.key}: {bucket.policy}")

# Upload and translate
obj = client.objects("my-bucket").upload("model.rvt")
job = client.translate(obj.urn)
result = job.wait()

Key features:

  • Native Python library via PyO3
  • Full type hints for IDE support
  • Structured exceptions (AuthenticationError, NotFoundError, etc.)
  • Context manager support

📖 Python Bindings Documentation →


GitHub Actions

Pre-built action for CI/CD workflows.

# .github/workflows/aps.yml
- name: Setup RAPS
  uses: dmytro-yemelianov/raps-action@v1

- name: Upload Models
  run: raps object upload my-bucket models/*.rvt --batch
  env:
    APS_CLIENT_ID: ${{ secrets.APS_CLIENT_ID }}
    APS_CLIENT_SECRET: ${{ secrets.APS_CLIENT_SECRET }}

Key features:

  • Easy setup with single action
  • Version pinning for reproducibility
  • Cross-platform (ubuntu, windows, macos)
  • Matrix builds for parallel processing

📖 GitHub Actions Documentation →


Docker

Run RAPS in isolated containers.

# Single command
docker run --rm \
  -e APS_CLIENT_ID="$APS_CLIENT_ID" \
  -e APS_CLIENT_SECRET="$APS_CLIENT_SECRET" \
  ghcr.io/dmytro-yemelianov/raps:latest \
  bucket list

# With file uploads
docker run --rm \
  -e APS_CLIENT_ID="$APS_CLIENT_ID" \
  -e APS_CLIENT_SECRET="$APS_CLIENT_SECRET" \
  -v $(pwd)/models:/data \
  ghcr.io/dmytro-yemelianov/raps:latest \
  object upload my-bucket /data/model.rvt

Key features:

  • No Rust installation required
  • Multi-architecture (amd64, arm64)
  • Works in any CI/CD system
  • Kubernetes ready

📖 Docker Documentation →


MCP Server

AI assistant integration via Model Context Protocol.

// claude_desktop_config.json
{
  "mcpServers": {
    "raps": {
      "command": "raps",
      "args": ["serve"],
      "env": {
        "APS_CLIENT_ID": "your_client_id",
        "APS_CLIENT_SECRET": "your_client_secret"
      }
    }
  }
}

Then ask Claude: “List all my OSS buckets”

Key features:

  • 14 MCP tools for APS operations
  • Natural language commands
  • Works with Claude, Cursor, and other MCP clients
  • No command syntax needed

📖 MCP Server Documentation →


Comparison Matrix

FeatureCLIShellPythonActionsDockerMCP
TAB completionIDE
Type hints
Command history
Scripting
CI/CD native
Natural language
No install needed
Isolated environment
Exception handlingcodescodescodescodes

Choosing the Right Mode

                    How will you use RAPS?

    ┌───────────────┬───────┼───────┬───────────────┐
    ▼               ▼       ▼       ▼               ▼
┌────────┐    ┌─────────┐ ┌──────┐ ┌─────────┐ ┌────────┐
│Learning│    │ Python  │ │Script│ │Container│ │   AI   │
│Explore │    │  Code   │ │CI/CD │ │  K8s    │ │ Assist │
└───┬────┘    └────┬────┘ └──┬───┘ └────┬────┘ └───┬────┘
    │              │         │          │          │
    ▼              ▼         ▼          ▼          ▼
┌────────┐    ┌─────────┐ ┌──────┐ ┌─────────┐ ┌────────┐
│  Shell │    │ Python  │ │ CLI  │ │ Docker  │ │  MCP   │
│        │    │Bindings │ │Action│ │         │ │ Server │
└────────┘    └─────────┘ └──────┘ └─────────┘ └────────┘

Recommendations

Use Interactive Shell if you’re:

  • New to RAPS and learning commands
  • Exploring available options
  • Debugging command syntax

Use Python Bindings if you’re:

  • Building Python applications
  • Need type safety and IDE support
  • Integrating with data pipelines
  • Want structured exception handling

Use CLI if you’re:

  • Writing shell scripts
  • Piping output to other tools
  • Running one-off commands

Use GitHub Actions if you’re:

  • Automating on GitHub
  • Need easy CI/CD integration
  • Running parallel matrix builds

Use Docker if you’re:

  • Running in containers/Kubernetes
  • Need isolated environments
  • Don’t want to install Rust

Use MCP Server if you’re:

  • Using Claude Desktop or Cursor
  • Prefer natural language
  • Prototyping quickly