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 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.