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-local-pod
# Or using pipx (recommended)
pipx install podex-local-pod
3. Run
# Start the agent
podex-local-pod start --token pdx_pod_xxx
# Or use environment variable
export PODEX_POD_TOKEN=pdx_pod_xxx
podex-local-pod start
Docker Installation
docker run -d \
--name podex-local-pod \
-e PODEX_POD_TOKEN=pdx_pod_xxx \
-v /var/run/docker.sock:/var/run/docker.sock \
podex/local-pod:latest
Commands
# Start the agent
podex-local-pod start [OPTIONS]
# Check system requirements
podex-local-pod check
# Show version
podex-local-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 |
--max-workspaces |
PODEX_MAX_WORKSPACES |
Maximum concurrent workspaces (1-10, default: 3) |
--config |
- | Path to config file |
Configuration File
You can use a TOML config file instead of command-line options:
# ~/.config/podex/local-pod.toml
[podex]
pod_token = "pdx_pod_xxx"
cloud_url = "https://api.podex.dev"
pod_name = "my-dev-machine"
max_workspaces = 3
docker_network = "podex-local"
heartbeat_interval = 30
Then run:
podex-local-pod start --config ~/.config/podex/local-pod.toml
Requirements
- Docker (with access to
/var/run/docker.sock) - Python 3.11+
- 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
- Workspaces: The agent manages Docker containers on your machine for each workspace
- 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
- Container isolation: Workspaces run in isolated Docker containers
Troubleshooting
Check Requirements
podex-local-pod check
This verifies Docker 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
Docker permission denied
- Add your user to the docker group:
sudo usermod -aG docker $USER - Or run with sudo (not recommended for production)
Image not found
- Pull the workspace image:
docker pull podex/workspace:latest
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.1a0.tar.gz.
File metadata
- Download URL: podex_pod-0.0.1a0.tar.gz
- Upload date:
- Size: 131.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0cc7299a009abe1ecfaebd55e12afabaa76efe78b2b390b41eae97cbeede1353
|
|
| MD5 |
7e34ed682d62c52d661708d8bf074804
|
|
| BLAKE2b-256 |
bdc915da70f46c0a2678512c26916b9d671a9ad93254f53bf2974629d5561493
|
Provenance
The following attestation bundles were made for podex_pod-0.0.1a0.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.1a0.tar.gz -
Subject digest:
0cc7299a009abe1ecfaebd55e12afabaa76efe78b2b390b41eae97cbeede1353 - Sigstore transparency entry: 881924879
- Sigstore integration time:
-
Permalink:
mujacica/podex@1ff49afbb0feb1a7df5694a5e713a5fc5b4680a1 -
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@1ff49afbb0feb1a7df5694a5e713a5fc5b4680a1 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file podex_pod-0.0.1a0-py3-none-any.whl.
File metadata
- Download URL: podex_pod-0.0.1a0-py3-none-any.whl
- Upload date:
- Size: 27.3 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 |
97174043d05a468736ee62131b2b12dceaa1e8fc4d6e8c2585088b16544c20ea
|
|
| MD5 |
6b47a3a1231f67af176ee293a61469e2
|
|
| BLAKE2b-256 |
13d77354568a8cdf43785dd334b9d32c4ada2cb39289c4f565ec7a0b3badf305
|
Provenance
The following attestation bundles were made for podex_pod-0.0.1a0-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.1a0-py3-none-any.whl -
Subject digest:
97174043d05a468736ee62131b2b12dceaa1e8fc4d6e8c2585088b16544c20ea - Sigstore transparency entry: 881924945
- Sigstore integration time:
-
Permalink:
mujacica/podex@1ff49afbb0feb1a7df5694a5e713a5fc5b4680a1 -
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@1ff49afbb0feb1a7df5694a5e713a5fc5b4680a1 -
Trigger Event:
workflow_dispatch
-
Statement type: