dynamo/lib/runtime
Qi Wang e47457e4e7
test: unit test tcp/client.rs handle_writer [1/n] (#5055)
2026-01-13 17:06:17 +00:00
..
benches chore: update all copyright headers in repo to 2026 (#5130) 2026-01-02 22:08:23 +00:00
docs feat: add Rayon compute pool for CPU-intensive operations (#2969) 2025-09-26 11:23:30 -06:00
examples chore: update all copyright headers in repo to 2026 (#5130) 2026-01-02 22:08:23 +00:00
lib/bindings/python chore: update all copyright headers in repo to 2026 (#5130) 2026-01-02 22:08:23 +00:00
src test: unit test tcp/client.rs handle_writer [1/n] (#5055) 2026-01-13 17:06:17 +00:00
tests chore: update all copyright headers in repo to 2026 (#5130) 2026-01-02 22:08:23 +00:00
Cargo.toml chore: update all copyright headers in repo to 2026 (#5130) 2026-01-02 22:08:23 +00:00
LICENSE refactor: move libs to lib dir 2025-02-24 18:21:02 -08:00
README.md fix: update crate lib/runtime README to one that exists (#3786) 2025-10-21 15:24:45 -04:00

README.md

Dynamo Runtime

A Datacenter Scale Distributed Inference Serving Framework

License

Rust implementation of the Dynamo runtime system, enabling distributed computing capabilities for machine learning workloads.

Prerequisites

Install Rust and Cargo using rustup:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Build

cargo build
cargo test

Start Dependencies

Docker Compose

The simplest way to deploy the pre-requisite services is using docker-compose, defined in deploy/docker-compose.yml.

# At the root of the repository:
docker compose -f deploy/docker-compose.yml up -d

This will deploy a NATS.io server and an etcd server used to communicate between and discover components at runtime.

Local (alternate)

To deploy the pre-requisite services locally instead of using docker-compose above, you can manually launch each:

Run Examples

When developing or running examples, any process or user that shared your core-services (etcd and nats.io) will be operating within your distributed runtime.

The current examples use a hard-coded namespace. We will address the namespace collisions later.

Most examples require etcd for service discovery. nats.io is required for KV-aware routing with event tracking; for approximate mode (--no-kv-events), NATS is optional.

Rust hello_world

With two terminals open, in one window:

cd examples/hello_world
cargo run --bin server

In the second terminal, execute:

cd examples/hello_world
cargo run --bin client

which should yield some output similar to:

    Finished `dev` profile [unoptimized + debuginfo] target(s) in 6.25s
     Running `target/debug/client`
Annotated { data: Some("h"), id: None, event: None, comment: None }
Annotated { data: Some("e"), id: None, event: None, comment: None }
Annotated { data: Some("l"), id: None, event: None, comment: None }
Annotated { data: Some("l"), id: None, event: None, comment: None }
Annotated { data: Some("o"), id: None, event: None, comment: None }
Annotated { data: Some(" "), id: None, event: None, comment: None }
Annotated { data: Some("w"), id: None, event: None, comment: None }
Annotated { data: Some("o"), id: None, event: None, comment: None }
Annotated { data: Some("r"), id: None, event: None, comment: None }
Annotated { data: Some("l"), id: None, event: None, comment: None }
Annotated { data: Some("d"), id: None, event: None, comment: None }

Python

See the README.md for details

The Python and Rust hello_world client and server examples are interchangeable, so you can start the Python server.py and talk to it from the Rust client.