motus deploy opens an authentication dialog similar to
motus login when the user is unauthenticated.
Usage
Options
| Flag | Default | Description |
|---|---|---|
import-path | Read from motus.toml | Python import path to your agent in module:variable format (e.g., myapp:agent) |
--name | — | Project name. Creates a new project if none exists with this name. Mutually exclusive with --project-id. |
--project-id | Read from motus.toml | ID of an existing project to deploy to. Mutually exclusive with --name. |
--git-url | — | Git repository URL. When provided, the build service clones the repo instead of uploading local files. |
--git-ref | — | Branch, tag, or commit SHA to check out. Requires --git-url. |
--secret | — | KEY=VALUE secret injected into the agent container. Use KEY alone to read the value from your local environment. Repeatable. |
On your first deploy, you must provide either
--name or --project-id. After a successful deploy, Motus writes project_id, build_id, and import_path to motus.toml in your project directory, so subsequent deploys can run without any flags.How it works
When you runmotus deploy, it:
- Validates your import path by importing it locally.
- Resolves or creates the project using
--project-idor--name. - Packs your project files into a
.tar.zstarchive (skipping dotfiles,__pycache__,.pyc, virtualenvs, and.gitignore-excluded paths) and uploads them — or, for Git deploys, instructs the build service to clone the repository directly. - Streams build status via SSE:
queued→building→built→deploying→deployed→healthy.

