Skip to main content

A command line interface for running cloud jobs

Project description

o-o

o‑o is a command line interface for running jobs on ephemeral cloud instances with tracked inputs and outputs. Building data or MLOps pipelines is as simple as stringing together multiple commands, as easily as running locally, but with the power of cloud compute and storage.

Highlights

  • Easily run any command in any language in cloud compute environments
  • Flexible. Define your own run environments with docker images and machine types
  • Traceable. Trace all inputs to the commands that produced them
  • You control your data. Data and source code is stored in your managed buckets
  • Support for Scaleway and Google Cloud (more to come...)

Getting Started

Follow the installation instructions to configure o-o. Once setup, define environments and datastores in an .ooconfig file:

project: test-project
environments:
  - name: scaleway
    provider: scaleway
    image: docker.io/debian:stable-slim
    machinetype: STARDUST1-S
    region: fr-par-1
  - name: gcp
    provider: gcp
    image: docker.io/debian:stable-slim
    machinetype: e2-highcpu-2
    region: northamerica-northeast1-b
  - name: scaleway-l4
    provider: scaleway
    image: docker.io/nvidia/cuda:11.0.3-base-ubuntu20.04
    machinetype: L4-1-24G
    region: fr-par-1
datastores:
  - name: my-datastore
    provider: scaleway
    bucket: o-o-data
    region: fr-par

Lets start with a simple example that creates a data.txt file containing "Hello World" (under the hood, o-o will start and configure our scaleway environment, execute our command, copy output files to our datastore, and finally, delete the Scaleway instance).

$ o-o run --environment scaleway --message "create data.txt" -- \
    'echo "Hello World" > o://output/data.txt'

We completed our first run! o-o run --list displays the run's id (in this case ntus965ryy) and message:

$ o-o run --list
ntus965ryy create data.txt

You are free to run commands in any configured environment. Let's run a second command in our gcp environment that uses the output of ntus965ryy as input, and simply prints the contents of data.txt:

$ o-o run --environment gcp --message "print data.txt" -- \
    cat o://ntus965ryy/data.txt
Hello World

$ o-o run --list
ntus965ryy create data.txt
cxdbx8am38 print data.txt

GPUs are also available with properly configured environments. The scaleway-l4 environment we configured above supports GPU workloads:

$ o-o run --environment scaleway-l4 --message "try gpu environment" -- nvidia-smi
Sat Feb 1 10:00:00 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 570.195.03             Driver Version: 570.195.03     CUDA Version: 12.8     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA L4                      Off |   00000000:01:00.0 Off |                    0 |
| N/A   36C    P0             27W /   72W |       0MiB /  23034MiB |      2%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|  No running processes found                                                             |
+-----------------------------------------------------------------------------------------+

And that's the basics. Find out more in the documentation and with o-o --help.

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

o_o-0.7.0.tar.gz (35.5 kB view details)

Uploaded Source

Built Distribution

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

o_o-0.7.0-py3-none-any.whl (38.8 kB view details)

Uploaded Python 3

File details

Details for the file o_o-0.7.0.tar.gz.

File metadata

  • Download URL: o_o-0.7.0.tar.gz
  • Upload date:
  • Size: 35.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.11

File hashes

Hashes for o_o-0.7.0.tar.gz
Algorithm Hash digest
SHA256 5bfc1c3fe64b930105c98a06678872679f08fbfbd152cd6613342ac29d9aaae8
MD5 5c25c1ac87a8bff6b9454d6bd45c2bf0
BLAKE2b-256 c321f741e57a26a588f9074583bfc40ca2fd9a9ef87778509af4bf3b78a44f4a

See more details on using hashes here.

File details

Details for the file o_o-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: o_o-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 38.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.11

File hashes

Hashes for o_o-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 64f9bd654fc8a0a84814dc6a1c656ef63cc883902c7bf50c1a97feac3cfd60f2
MD5 afe336af7993a636bf9a49efc494c81d
BLAKE2b-256 1fb7291f28ec2290b9edeff050bb19ac121e2eb33abf3ad215b9dbd11341336c

See more details on using hashes here.

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