Usage Modes

RAPS offers seven 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
TUI DashboardVisual monitoring7 tabs, 33 views, real-time status
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": ["mcp"],
      "env": {
        "APS_CLIENT_ID": "your_client_id",
        "APS_CLIENT_SECRET": "your_client_secret"
      }
    }
  }
}

Then ask Claude: β€œList all my OSS buckets”

Key features:

  • 111 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 completionβ€”βœ“IDEβ€”β€”β€”
Type hintsβ€”β€”βœ“β€”β€”β€”
Command historyβ€”βœ“β€”β€”β€”β€”
Scriptingβœ“β€”βœ“βœ“βœ“β€”
CI/CD nativeβœ“β€”βœ“βœ“βœ“β€”
Natural languageβ€”β€”β€”β€”β€”βœ“
No install neededβ€”β€”β€”βœ“βœ“β€”
Isolated environmentβ€”β€”β€”βœ“βœ“β€”
Exception handlingcodescodesβœ“codescodesβ€”

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