Run Devin Outposts workers on Modal
Project description
modal-devin
Run Devin Outposts sessions on Modal.
Devin's planning remains in Devin Cloud while commands, file edits, and repository
access run in isolated Modal Sandboxes that
you control. modal-devin provides the orchestrator: it watches your outpost,
starts a Sandbox for each session, preserves suspended work, and cleans up when the
session ends.
[!NOTE]
modal-devinis alpha software. Until the first stable release, only the latest release on the default branch receives security fixes.
When to use it
Use modal-devin when you want Devin sessions to:
- Run with custom tools, repositories, and system packages.
- Reach services and registries available from your Modal environment.
- Use Modal compute, memory, and region controls.
- Resume from a preserved workspace after suspension.
- Fit into an existing Python and Modal deployment workflow.
How it fits into Outposts
Outposts separates the worker from the orchestrator:
- The worker executes one Devin session.
modal-devinruns it inside a Modal Sandbox. - The orchestrator finds queued sessions and manages their compute lifecycle.
modal-devindeploys this layer as a Modal application.
Workers need outbound HTTPS access to Devin. They do not require inbound ports or a public IP.
Quick start
You need Python 3.11 or newer, a configured Modal account, an outpost ID, and a Devin token authorized for that outpost.
uv add modal-devin
uv run modal setup
uv run modal-devin init my-outpost --outpost-id outpost_env-...
uv run modal-devin doctor
uv run modal-devin deploy outposts/my_outpost.py
Run uv run modal-devin init without arguments to create an outpost interactively.
The generated Python file is your Modal application. Edit it to choose the workspace image, secrets, compute, region, retry policy, and schedule. The library manages the Outposts and Sandbox lifecycle behind that application.
Customize the workspace
Add packages and project source to the generated image block, before
prepare_image():
base_image = (
worker.base_image()
.apt_install("ripgrep")
.run_commands(
"git clone https://github.com/your-org/app /root/workspace/app"
)
)
image = worker.prepare_image(base_image)
Documentation
Full tutorials, how-to guides, and reference docs live in this repository under
tutorials/, guides/, explanation/, and reference/. They're written for the
project's Mintlify site, which isn't published yet, so some page components won't
render when viewed directly on GitHub:
- Deploy your first worker
- Build a project workspace
- Configure resources and regions
- Operate a deployed worker
- Security model
Security
Use a least-privilege Devin service user and separate credentials for environments with different trust requirements. The session workload does not receive the raw Outposts token in its environment, although it can exercise the Outposts capability required to serve its assigned session.
Report vulnerabilities through GitHub private vulnerability reporting.
Development
See CONTRIBUTING.md for the development and test workflow.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file modal_devin-0.1.4.tar.gz.
File metadata
- Download URL: modal_devin-0.1.4.tar.gz
- Upload date:
- Size: 148.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6d815df4ca5bfc5990a0fceb9509bb76115bf3e8fe732de92fc13ba60f1cffa1
|
|
| MD5 |
140af9565d6ef9ea0299b116c90baf09
|
|
| BLAKE2b-256 |
22d5715ab3b44383e7c9d32a55d4c09362e8de9dce5a133e4a3d89fcbeb59631
|
File details
Details for the file modal_devin-0.1.4-py3-none-any.whl.
File metadata
- Download URL: modal_devin-0.1.4-py3-none-any.whl
- Upload date:
- Size: 27.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a7f23695139ff99fe4f8c2acb36112c6b0ed60516d582b93e681bb634a3ef137
|
|
| MD5 |
dbf9a9951c74f0b121184516bbdfd8ae
|
|
| BLAKE2b-256 |
bed2fff803e27120593973b82a05a8e903d7b18e8d4e4a52c06e7ca1a443aa01
|