Podex Local Pod - Self-hosted compute agent for Podex
Project description
Podex Local Pod
Self-hosted compute agent for Podex. Run workspaces on your own machine for faster local development, full GPU access, and keeping code on-premises.
Quick Start
1. Get Your Token
- Go to Settings > Local Pods in Podex
- Click Add Pod and give it a name
- Copy the token (shown only once!)
2. Install
# Using pip
pip install podex-pod
# Or using pipx (recommended)
pipx install podex-pod
3. Run
# Start the agent
podex-pod start --token pdx_pod_xxx
# Or use environment variable
export PODEX_POD_TOKEN=pdx_pod_xxx
podex-pod start
Docker Installation (Optional)
You can run the pod agent itself inside Docker:
docker run -d \
--name podex-pod \
-e PODEX_POD_TOKEN=pdx_pod_xxx \
podex/local-pod:latest
Commands
# Start the agent
podex-pod start [OPTIONS]
# Check system requirements
podex-pod check
# Show version
podex-pod version
Start Options
| Option | Environment Variable | Description |
|---|---|---|
--token |
PODEX_POD_TOKEN |
Pod authentication token (required) |
--url |
PODEX_CLOUD_URL |
Podex cloud URL (default: https://api.podex.dev) |
--name |
PODEX_POD_NAME |
Display name for this pod |
Configuration File
Create a .env file to save your configuration:
# ~/.config/podex/.env
PODEX_POD_TOKEN=pdx_pod_xxx
PODEX_POD_NAME=my-dev-machine
PODEX_CLOUD_URL=https://api.podex.dev
Then run from that directory:
cd ~/.config/podex && podex-pod start
Or copy the .env file to your current working directory.
Requirements
- Python 3.11+
- tmux (required for terminal features)
- 4GB+ RAM recommended
- 2+ CPU cores recommended
How It Works
- Registration: You register a local pod in Podex Settings and receive a token
- Connection: The agent connects to Podex cloud via WebSocket (outbound connection)
- Commands: When you create a workspace targeting your local pod, Podex sends commands through the WebSocket
- Execution: The agent executes commands natively on your machine using tmux for terminal sessions
- Communication: File operations, terminal, and port forwarding all work through the connection
Security
- Outbound only: The agent initiates the connection - no inbound ports needed
- Token auth: Tokens are hashed and verified on each connection
- User isolation: Each pod only sees workspaces for its owner
- Native execution: Commands run directly on your machine with your user permissions
Troubleshooting
Check Requirements
podex-pod check
This verifies tmux is available and shows system resources.
Common Issues
Connection refused
- Check your internet connection
- Verify the token is correct
- Check if a firewall is blocking outbound WebSocket connections
tmux not found
- Install tmux:
brew install tmux(macOS) orapt install tmux(Linux) - tmux is required for terminal features to work properly
Development
# Clone the repo
git clone https://github.com/podex/podex
cd podex/services/local-pod
# Install dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Run linting
ruff check .
mypy .
License
MIT License - see LICENSE for details.
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 podex_pod-0.0.1a1.tar.gz.
File metadata
- Download URL: podex_pod-0.0.1a1.tar.gz
- Upload date:
- Size: 131.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
afec33190a4f68049bbcc2d1481db538d90d5ac10f7d5e02061772bab8d6cce4
|
|
| MD5 |
81fb0e2f935e7d01f580fbdddc235d37
|
|
| BLAKE2b-256 |
5b287510191b79bfde345a2d7020e48e50c6dbf13ad0ccee9e11aaba2c324497
|
Provenance
The following attestation bundles were made for podex_pod-0.0.1a1.tar.gz:
Publisher:
pypi.yml on mujacica/podex
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
podex_pod-0.0.1a1.tar.gz -
Subject digest:
afec33190a4f68049bbcc2d1481db538d90d5ac10f7d5e02061772bab8d6cce4 - Sigstore transparency entry: 882312403
- Sigstore integration time:
-
Permalink:
mujacica/podex@6c43163256761b5e98e3794a753f95cc0dc1d246 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/mujacica
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@6c43163256761b5e98e3794a753f95cc0dc1d246 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file podex_pod-0.0.1a1-py3-none-any.whl.
File metadata
- Download URL: podex_pod-0.0.1a1-py3-none-any.whl
- Upload date:
- Size: 27.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
64f064060709e09e7ca8d54cb2a70e4c7fab38c0bd1b2a13844fec6c260268b8
|
|
| MD5 |
8e53b2e8348aa998f4a1812b0da983f2
|
|
| BLAKE2b-256 |
504bb44b32877c7ff2c4f0a43a918d966f0e1a72d8e9fdc298f87ad4e7b8d9a4
|
Provenance
The following attestation bundles were made for podex_pod-0.0.1a1-py3-none-any.whl:
Publisher:
pypi.yml on mujacica/podex
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
podex_pod-0.0.1a1-py3-none-any.whl -
Subject digest:
64f064060709e09e7ca8d54cb2a70e4c7fab38c0bd1b2a13844fec6c260268b8 - Sigstore transparency entry: 882312460
- Sigstore integration time:
-
Permalink:
mujacica/podex@6c43163256761b5e98e3794a753f95cc0dc1d246 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/mujacica
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@6c43163256761b5e98e3794a753f95cc0dc1d246 -
Trigger Event:
workflow_dispatch
-
Statement type: