runtm 0.2.9__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- runtm-0.2.9/.gitignore +83 -0
- runtm-0.2.9/LICENSE +42 -0
- runtm-0.2.9/PKG-INFO +381 -0
- runtm-0.2.9/README.md +334 -0
- runtm-0.2.9/pyproject.toml +70 -0
- runtm-0.2.9/runtm_cli/__init__.py +3 -0
- runtm-0.2.9/runtm_cli/api_client.py +1068 -0
- runtm-0.2.9/runtm_cli/auth.py +230 -0
- runtm-0.2.9/runtm_cli/commands/__init__.py +47 -0
- runtm-0.2.9/runtm_cli/commands/admin.py +382 -0
- runtm-0.2.9/runtm_cli/commands/approve.py +330 -0
- runtm-0.2.9/runtm_cli/commands/deploy.py +658 -0
- runtm-0.2.9/runtm_cli/commands/destroy.py +107 -0
- runtm-0.2.9/runtm_cli/commands/domain.py +376 -0
- runtm-0.2.9/runtm_cli/commands/fix.py +76 -0
- runtm-0.2.9/runtm_cli/commands/init.py +479 -0
- runtm-0.2.9/runtm_cli/commands/list.py +81 -0
- runtm-0.2.9/runtm_cli/commands/logs.py +158 -0
- runtm-0.2.9/runtm_cli/commands/run.py +333 -0
- runtm-0.2.9/runtm_cli/commands/search.py +157 -0
- runtm-0.2.9/runtm_cli/commands/secrets.py +329 -0
- runtm-0.2.9/runtm_cli/commands/session.py +785 -0
- runtm-0.2.9/runtm_cli/commands/status.py +87 -0
- runtm-0.2.9/runtm_cli/commands/validate.py +1274 -0
- runtm-0.2.9/runtm_cli/config.py +232 -0
- runtm-0.2.9/runtm_cli/main.py +1182 -0
- runtm-0.2.9/runtm_cli/telemetry.py +468 -0
- runtm-0.2.9/tests/__init__.py +1 -0
- runtm-0.2.9/tests/test_approve.py +380 -0
- runtm-0.2.9/tests/test_config.py +116 -0
- runtm-0.2.9/tests/test_secrets.py +474 -0
- runtm-0.2.9/tests/test_session.py +285 -0
- runtm-0.2.9/tests/test_validate.py +71 -0
- runtm-0.2.9/uv.lock +1354 -0
runtm-0.2.9/.gitignore
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
|
|
6
|
+
# C extensions
|
|
7
|
+
*.so
|
|
8
|
+
|
|
9
|
+
# Distribution / packaging
|
|
10
|
+
.Python
|
|
11
|
+
/build/
|
|
12
|
+
develop-eggs/
|
|
13
|
+
dist/
|
|
14
|
+
downloads/
|
|
15
|
+
eggs/
|
|
16
|
+
.eggs/
|
|
17
|
+
lib/
|
|
18
|
+
lib64/
|
|
19
|
+
parts/
|
|
20
|
+
sdist/
|
|
21
|
+
var/
|
|
22
|
+
wheels/
|
|
23
|
+
*.egg-info/
|
|
24
|
+
.installed.cfg
|
|
25
|
+
*.egg
|
|
26
|
+
|
|
27
|
+
# PyInstaller
|
|
28
|
+
*.manifest
|
|
29
|
+
*.spec
|
|
30
|
+
|
|
31
|
+
# Installer logs
|
|
32
|
+
pip-log.txt
|
|
33
|
+
pip-delete-this-directory.txt
|
|
34
|
+
|
|
35
|
+
# Unit test / coverage reports
|
|
36
|
+
htmlcov/
|
|
37
|
+
.tox/
|
|
38
|
+
.nox/
|
|
39
|
+
.coverage
|
|
40
|
+
.coverage.*
|
|
41
|
+
.cache
|
|
42
|
+
nosetests.xml
|
|
43
|
+
coverage.xml
|
|
44
|
+
*.cover
|
|
45
|
+
*.py,cover
|
|
46
|
+
.hypothesis/
|
|
47
|
+
.pytest_cache/
|
|
48
|
+
|
|
49
|
+
# Translations
|
|
50
|
+
*.mo
|
|
51
|
+
*.pot
|
|
52
|
+
|
|
53
|
+
# Environments
|
|
54
|
+
.env
|
|
55
|
+
.venv
|
|
56
|
+
env/
|
|
57
|
+
venv/
|
|
58
|
+
ENV/
|
|
59
|
+
env.bak/
|
|
60
|
+
venv.bak/
|
|
61
|
+
|
|
62
|
+
# IDE
|
|
63
|
+
.idea/
|
|
64
|
+
.vscode/
|
|
65
|
+
*.swp
|
|
66
|
+
*.swo
|
|
67
|
+
*~
|
|
68
|
+
.cursor/
|
|
69
|
+
.cursor/rules/
|
|
70
|
+
|
|
71
|
+
# macOS
|
|
72
|
+
.DS_Store
|
|
73
|
+
|
|
74
|
+
# Project specific
|
|
75
|
+
/artifacts/
|
|
76
|
+
*.log
|
|
77
|
+
|
|
78
|
+
# Internal planning docs
|
|
79
|
+
.plans/
|
|
80
|
+
|
|
81
|
+
# Alembic
|
|
82
|
+
packages/api/alembic/versions/*.pyc
|
|
83
|
+
|
runtm-0.2.9/LICENSE
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Apache-2.0
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Runtm
|
|
4
|
+
|
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
you may not use this file except in compliance with the License.
|
|
7
|
+
You may obtain a copy of the License at
|
|
8
|
+
|
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
|
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
See the License for the specific language governing permissions and
|
|
15
|
+
limitations under the License.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Full License Text
|
|
20
|
+
|
|
21
|
+
The full text of the Apache License 2.0 is available at:
|
|
22
|
+
https://www.apache.org/licenses/LICENSE-2.0.txt
|
|
23
|
+
|
|
24
|
+
### Summary
|
|
25
|
+
|
|
26
|
+
The Apache-2.0 license allows you to:
|
|
27
|
+
|
|
28
|
+
1. **Use**: Use the software for any purpose, commercial or non-commercial.
|
|
29
|
+
|
|
30
|
+
2. **Modify**: Make changes to the source code.
|
|
31
|
+
|
|
32
|
+
3. **Distribute**: Distribute the original or modified software.
|
|
33
|
+
|
|
34
|
+
4. **Patent Grant**: Includes an express grant of patent rights from contributors.
|
|
35
|
+
|
|
36
|
+
**Requirements:**
|
|
37
|
+
|
|
38
|
+
- Include the original copyright notice and license
|
|
39
|
+
- State any significant changes made to the software
|
|
40
|
+
- Include the NOTICE file if one exists
|
|
41
|
+
|
|
42
|
+
This permissive license enables broad adoption and integration while maintaining attribution.
|
runtm-0.2.9/PKG-INFO
ADDED
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: runtm
|
|
3
|
+
Version: 0.2.9
|
|
4
|
+
Summary: Sandboxes where AI agents build and deploy. Spin up isolated environments for Claude Code, Cursor, and other agents.
|
|
5
|
+
Project-URL: Homepage, https://runtm.com
|
|
6
|
+
Project-URL: Documentation, https://docs.runtm.com
|
|
7
|
+
Project-URL: Repository, https://github.com/runtm-ai/runtm
|
|
8
|
+
Project-URL: Issues, https://github.com/runtm-ai/runtm/issues
|
|
9
|
+
Author-email: Gustavo Trigos <gus@runtm.com>
|
|
10
|
+
Maintainer-email: Gustavo Trigos <gus@runtm.com>
|
|
11
|
+
License: Apache-2.0
|
|
12
|
+
License-File: LICENSE
|
|
13
|
+
Keywords: ai,cli,deployment,devops,fly.io,serverless
|
|
14
|
+
Classifier: Development Status :: 4 - Beta
|
|
15
|
+
Classifier: Environment :: Console
|
|
16
|
+
Classifier: Intended Audience :: Developers
|
|
17
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
18
|
+
Classifier: Operating System :: OS Independent
|
|
19
|
+
Classifier: Programming Language :: Python :: 3
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
24
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
25
|
+
Classifier: Topic :: System :: Software Distribution
|
|
26
|
+
Requires-Python: >=3.9
|
|
27
|
+
Requires-Dist: httpx<1.0,>=0.24
|
|
28
|
+
Requires-Dist: keyring<26.0,>=24.0
|
|
29
|
+
Requires-Dist: pathspec<1.0,>=0.11
|
|
30
|
+
Requires-Dist: python-dotenv<2.0,>=1.0.0
|
|
31
|
+
Requires-Dist: pyyaml<7.0,>=6.0
|
|
32
|
+
Requires-Dist: questionary<3.0,>=2.0
|
|
33
|
+
Requires-Dist: rich<14.0,>=13.0
|
|
34
|
+
Requires-Dist: runtm-shared>=0.2.2
|
|
35
|
+
Requires-Dist: typer<1.0,>=0.9.0
|
|
36
|
+
Provides-Extra: dev
|
|
37
|
+
Requires-Dist: mypy<2.0,>=1.0; extra == 'dev'
|
|
38
|
+
Requires-Dist: pytest-cov<6.0,>=4.0; extra == 'dev'
|
|
39
|
+
Requires-Dist: pytest<9.0,>=7.0; extra == 'dev'
|
|
40
|
+
Requires-Dist: ruff>=0.1.0; extra == 'dev'
|
|
41
|
+
Requires-Dist: runtm-agents>=0.1.0; extra == 'dev'
|
|
42
|
+
Requires-Dist: runtm-sandbox>=0.1.0; extra == 'dev'
|
|
43
|
+
Provides-Extra: sandbox
|
|
44
|
+
Requires-Dist: runtm-agents>=0.1.0; extra == 'sandbox'
|
|
45
|
+
Requires-Dist: runtm-sandbox>=0.1.0; extra == 'sandbox'
|
|
46
|
+
Description-Content-Type: text/markdown
|
|
47
|
+
|
|
48
|
+
# runtm
|
|
49
|
+
|
|
50
|
+
CLI for Runtm – sandboxes where AI agents build and deploy.
|
|
51
|
+
|
|
52
|
+
**Website:** [runtm.com](https://runtm.com) · **Docs:** [docs.runtm.com](https://docs.runtm.com) · **Sign up:** [app.runtm.com](https://app.runtm.com)
|
|
53
|
+
|
|
54
|
+
## Installation
|
|
55
|
+
|
|
56
|
+
**Recommended (uv):**
|
|
57
|
+
```bash
|
|
58
|
+
uv tool install runtm
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Alternative (pipx):**
|
|
62
|
+
```bash
|
|
63
|
+
pipx install runtm
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**From PyPI (pip):**
|
|
67
|
+
```bash
|
|
68
|
+
pip install runtm
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### With Sandbox Support
|
|
72
|
+
|
|
73
|
+
To use local sandboxes with AI agents:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
pip install runtm[sandbox]
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Upgrading
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# Upgrade to latest version (uv)
|
|
83
|
+
uv tool upgrade runtm
|
|
84
|
+
|
|
85
|
+
# Or force reinstall
|
|
86
|
+
uv tool install runtm --force
|
|
87
|
+
|
|
88
|
+
# With pipx
|
|
89
|
+
pipx upgrade runtm
|
|
90
|
+
|
|
91
|
+
# With pip
|
|
92
|
+
pip install --upgrade runtm
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Quick Start
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
# 1. Authenticate with Runtm
|
|
99
|
+
runtm login
|
|
100
|
+
|
|
101
|
+
# 2. Start a sandbox and build with AI
|
|
102
|
+
runtm start
|
|
103
|
+
runtm prompt "Build a REST API with SQLite"
|
|
104
|
+
|
|
105
|
+
# 3. Deploy to a live URL
|
|
106
|
+
runtm deploy
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
You get a live HTTPS endpoint. Machines auto-stop when idle and wake on traffic.
|
|
110
|
+
|
|
111
|
+
## Commands
|
|
112
|
+
|
|
113
|
+
### Sandbox Commands
|
|
114
|
+
|
|
115
|
+
| Command | Description |
|
|
116
|
+
|---------|-------------|
|
|
117
|
+
| `runtm start` | Start a sandbox session (interactive menu) |
|
|
118
|
+
| `runtm prompt "..."` | Send a prompt to the agent (autopilot mode) |
|
|
119
|
+
| `runtm attach [id]` | Attach to a sandbox (defaults to active) |
|
|
120
|
+
| `runtm session list` | List all sandbox sessions |
|
|
121
|
+
| `runtm session stop <id>` | Stop a session (preserves workspace) |
|
|
122
|
+
| `runtm session destroy <id>` | Destroy a session and delete workspace |
|
|
123
|
+
| `runtm session deploy` | Deploy from sandbox to live URL |
|
|
124
|
+
|
|
125
|
+
### Project Commands
|
|
126
|
+
|
|
127
|
+
| Command | Description |
|
|
128
|
+
|---------|-------------|
|
|
129
|
+
| `runtm init [template]` | Initialize from template (backend-service, web-app, static-site) |
|
|
130
|
+
| `runtm run` | Run project locally (auto-detects runtime) |
|
|
131
|
+
| `runtm validate` | Validate project before deployment |
|
|
132
|
+
| `runtm fix` | Auto-fix common issues (lockfiles) |
|
|
133
|
+
| `runtm deploy [path]` | Deploy project to a live URL |
|
|
134
|
+
|
|
135
|
+
### Deployment Commands
|
|
136
|
+
|
|
137
|
+
| Command | Description |
|
|
138
|
+
|---------|-------------|
|
|
139
|
+
| `runtm status <id>` | Show deployment status |
|
|
140
|
+
| `runtm logs <id>` | Show logs (build, deploy, runtime) |
|
|
141
|
+
| `runtm list` | List all deployments |
|
|
142
|
+
| `runtm search <query>` | Search deployments by description/tags |
|
|
143
|
+
| `runtm destroy <id>` | Destroy a deployment |
|
|
144
|
+
|
|
145
|
+
### Configuration Commands
|
|
146
|
+
|
|
147
|
+
| Command | Description |
|
|
148
|
+
|---------|-------------|
|
|
149
|
+
| `runtm config set/get/list` | Manage CLI configuration |
|
|
150
|
+
| `runtm secrets set/get/list/unset` | Manage environment secrets |
|
|
151
|
+
| `runtm domain add/status/remove` | Manage custom domains |
|
|
152
|
+
| `runtm approve` | Apply agent-proposed changes |
|
|
153
|
+
|
|
154
|
+
### Authentication Commands
|
|
155
|
+
|
|
156
|
+
| Command | Description |
|
|
157
|
+
|---------|-------------|
|
|
158
|
+
| `runtm login` | Authenticate with Runtm API |
|
|
159
|
+
| `runtm logout` | Remove saved credentials |
|
|
160
|
+
| `runtm doctor` | Check CLI setup and diagnose issues |
|
|
161
|
+
| `runtm version` | Show CLI version |
|
|
162
|
+
|
|
163
|
+
## Sandbox Sessions
|
|
164
|
+
|
|
165
|
+
Start isolated environments where AI agents can build software:
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
# Start with interactive menu
|
|
169
|
+
runtm start
|
|
170
|
+
|
|
171
|
+
# Or go directly to autopilot mode
|
|
172
|
+
runtm start --autopilot
|
|
173
|
+
|
|
174
|
+
# Send prompts to the agent
|
|
175
|
+
runtm prompt "Build a todo API with SQLite"
|
|
176
|
+
runtm prompt --continue "Add authentication"
|
|
177
|
+
|
|
178
|
+
# Attach to see what's happening
|
|
179
|
+
runtm attach
|
|
180
|
+
|
|
181
|
+
# List all sessions
|
|
182
|
+
runtm session list
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Modes
|
|
186
|
+
|
|
187
|
+
- **Autopilot**: Agent runs autonomously, control via `runtm prompt`
|
|
188
|
+
- **Interactive**: Drop into sandbox shell, control agent manually
|
|
189
|
+
|
|
190
|
+
### Available Agents
|
|
191
|
+
|
|
192
|
+
- `claude-code` - Anthropic's Claude Code (recommended)
|
|
193
|
+
- `codex` - OpenAI's Codex CLI
|
|
194
|
+
- `gemini` - Google's Gemini CLI
|
|
195
|
+
|
|
196
|
+
## Authentication
|
|
197
|
+
|
|
198
|
+
Get your free API key at **[app.runtm.com](https://app.runtm.com)**. The CLI will prompt you to authenticate on first use.
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
# Manual login
|
|
202
|
+
runtm login
|
|
203
|
+
|
|
204
|
+
# Login with token directly
|
|
205
|
+
runtm login --token runtm_sk_xxx
|
|
206
|
+
|
|
207
|
+
# Check auth status
|
|
208
|
+
runtm doctor
|
|
209
|
+
|
|
210
|
+
# Logout
|
|
211
|
+
runtm logout
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
**Token storage:**
|
|
215
|
+
- Primary: `~/.runtm/credentials` file (0o600 permissions)
|
|
216
|
+
- Optional: System keychain (if `keyring` package installed)
|
|
217
|
+
|
|
218
|
+
**Environment variable override:**
|
|
219
|
+
```bash
|
|
220
|
+
export RUNTM_API_KEY=runtm_sk_xxx # Overrides stored token
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
## Configuration
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
# Set API URL (for self-hosting)
|
|
227
|
+
runtm config set api_url=https://self-hosted.example.com/api
|
|
228
|
+
|
|
229
|
+
# Get a config value
|
|
230
|
+
runtm config get api_url
|
|
231
|
+
|
|
232
|
+
# List all config values
|
|
233
|
+
runtm config list
|
|
234
|
+
|
|
235
|
+
# Reset to defaults
|
|
236
|
+
runtm config reset
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
**Config file:** `~/.runtm/config.yaml`
|
|
240
|
+
|
|
241
|
+
**Environment variables:**
|
|
242
|
+
- `RUNTM_API_URL` - API endpoint (overrides config)
|
|
243
|
+
- `RUNTM_API_KEY` - API key (overrides stored token)
|
|
244
|
+
- `RUNTM_DEBUG` - Enable debug logging
|
|
245
|
+
|
|
246
|
+
## Secrets Management
|
|
247
|
+
|
|
248
|
+
Manage environment variables for deployments:
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
# Set secrets
|
|
252
|
+
runtm secrets set DATABASE_URL=postgres://...
|
|
253
|
+
runtm secrets set API_KEY=sk-xxx
|
|
254
|
+
|
|
255
|
+
# List secrets
|
|
256
|
+
runtm secrets list
|
|
257
|
+
|
|
258
|
+
# Get a secret value
|
|
259
|
+
runtm secrets get DATABASE_URL
|
|
260
|
+
|
|
261
|
+
# Remove a secret
|
|
262
|
+
runtm secrets unset OLD_KEY
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
Secrets are stored in `.env.local` (gitignored) and injected at deploy time.
|
|
266
|
+
|
|
267
|
+
## Troubleshooting
|
|
268
|
+
|
|
269
|
+
```bash
|
|
270
|
+
# Check CLI setup and diagnose issues
|
|
271
|
+
runtm doctor
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
Example output:
|
|
275
|
+
```
|
|
276
|
+
runtm v0.2.7
|
|
277
|
+
API URL: https://app.runtm.com/api
|
|
278
|
+
Auth storage: keychain (api_token@app.runtm.com)
|
|
279
|
+
Auth status: ✓ Authenticated as user@example.com
|
|
280
|
+
Connectivity: ✓ API reachable (142ms)
|
|
281
|
+
|
|
282
|
+
Ready to deploy! Run: runtm init
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
## Machine Tiers
|
|
286
|
+
|
|
287
|
+
All deployments use **auto-stop** for cost savings (machines stop when idle and start automatically on traffic).
|
|
288
|
+
|
|
289
|
+
| Tier | CPUs | Memory | Est. Cost | Use Case |
|
|
290
|
+
|------|------|--------|-----------|----------|
|
|
291
|
+
| **starter** (default) | 1 shared | 256MB | ~$2/month* | Simple tools, APIs |
|
|
292
|
+
| **standard** | 1 shared | 512MB | ~$5/month* | Most workloads |
|
|
293
|
+
| **performance** | 2 shared | 1GB | ~$10/month* | Full-stack apps |
|
|
294
|
+
|
|
295
|
+
*Costs are estimates for 24/7 operation. With auto-stop, costs are much lower for low-traffic services.
|
|
296
|
+
|
|
297
|
+
## Deployment
|
|
298
|
+
|
|
299
|
+
```bash
|
|
300
|
+
# Deploy to a live URL (uses starter tier by default)
|
|
301
|
+
runtm deploy
|
|
302
|
+
|
|
303
|
+
# Deploy with a specific tier
|
|
304
|
+
runtm deploy --tier standard
|
|
305
|
+
runtm deploy --tier performance
|
|
306
|
+
|
|
307
|
+
# Check deployment status
|
|
308
|
+
runtm status dep_abc123
|
|
309
|
+
|
|
310
|
+
# View logs
|
|
311
|
+
runtm logs dep_abc123
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
### Redeployment (CI/CD)
|
|
315
|
+
|
|
316
|
+
Runtm supports automatic redeployment based on the project name in `runtm.yaml`:
|
|
317
|
+
|
|
318
|
+
```bash
|
|
319
|
+
# First deploy - creates new deployment
|
|
320
|
+
runtm deploy # → v1, creates new URL
|
|
321
|
+
|
|
322
|
+
# Fix a bug, then redeploy - updates existing
|
|
323
|
+
runtm deploy # → v2, same URL, updated code
|
|
324
|
+
|
|
325
|
+
# Force a completely new deployment
|
|
326
|
+
runtm deploy --new # → v1, new deployment, new URL
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
## Logs
|
|
330
|
+
|
|
331
|
+
```bash
|
|
332
|
+
# All logs (build + deploy + recent runtime)
|
|
333
|
+
runtm logs dep_abc123
|
|
334
|
+
|
|
335
|
+
# Filter by log type
|
|
336
|
+
runtm logs dep_abc123 --type runtime
|
|
337
|
+
runtm logs dep_abc123 --type build
|
|
338
|
+
|
|
339
|
+
# More runtime log lines
|
|
340
|
+
runtm logs dep_abc123 --lines 100
|
|
341
|
+
|
|
342
|
+
# Search logs
|
|
343
|
+
runtm logs dep_abc123 --search "error"
|
|
344
|
+
runtm logs dep_abc123 --search "error,warning,timeout" # OR logic
|
|
345
|
+
|
|
346
|
+
# Pipe to grep (Heroku-style)
|
|
347
|
+
runtm logs dep_abc123 --raw | grep "error"
|
|
348
|
+
|
|
349
|
+
# JSON output for AI agents
|
|
350
|
+
runtm logs dep_abc123 --json
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
## Development
|
|
354
|
+
|
|
355
|
+
```bash
|
|
356
|
+
# Install in editable mode with sandbox support
|
|
357
|
+
pip install -e ".[dev,sandbox]"
|
|
358
|
+
pip install -e ../sandbox
|
|
359
|
+
pip install -e ../agents
|
|
360
|
+
|
|
361
|
+
# Use the development CLI (avoids conflicts with PyPI version)
|
|
362
|
+
runtm-dev start # Start sandbox session
|
|
363
|
+
runtm-dev prompt "Build an API" # Send prompt to agent
|
|
364
|
+
runtm-dev session list # List sessions
|
|
365
|
+
|
|
366
|
+
# Configure CLI to use local API (add to ~/.zshrc or ~/.bashrc)
|
|
367
|
+
export RUNTM_API_URL=http://localhost:8000
|
|
368
|
+
export RUNTM_API_KEY=dev-token-change-in-production
|
|
369
|
+
|
|
370
|
+
# Run tests
|
|
371
|
+
pytest
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
### `runtm` vs `runtm-dev`
|
|
375
|
+
|
|
376
|
+
| CLI | Source | Use Case |
|
|
377
|
+
|-----|--------|----------|
|
|
378
|
+
| `runtm` | PyPI (`pip install runtm`) | Production use |
|
|
379
|
+
| `runtm-dev` | Local `.venv/` | Development (includes sandbox/agents) |
|
|
380
|
+
|
|
381
|
+
If you have the PyPI version installed globally, use `runtm-dev` to ensure you're running your local development code with full sandbox support.
|