Command Reference¶
Complete reference for all txpark commands.
Global Flags¶
These flags work with all commands:
| Flag | Description |
|---|---|
--kubeconfig <path> |
Path to kubeconfig file (default: $HOME/.kube/config) |
--context <name> |
Kubernetes context to use |
--debug |
Enable debug logging |
--help |
Show help for any command |
deploy¶
Deploy a new testnet to the Kubernetes cluster.
Usage¶
If testnet-name is omitted, an auto-generated name will be used.
Flags¶
| Flag | Type | Default | Description |
|---|---|---|---|
--sequencer |
bool | false | Deploy with EVM sequencer node |
--build-branch <branch> |
string | - | GitLab branch to fetch binaries from |
--lifetime <duration> |
string | 1h | Testnet lifetime (e.g., 30m, 2h, 1d) |
--permanent |
bool | false | Create permanent testnet (never expires) |
--profile <name> |
string | default | Resource profile: default, high-performance |
--platform <name> |
string | alpine | Platform: alpine, debian-12, ubuntu-24.04, archlinux |
--kernel-setup <path> |
string | ./output/kernel_setup.yml | Path to kernel_setup.yml file |
--copy-local-binaries |
bool | false | Copy binaries from local $TEZOS_SOURCE (not yet implemented) |
Mutually Exclusive Flags
--lifetimeand--permanentcannot be used together--build-branchand--copy-local-binariescannot be used together
Resource Profiles¶
- default: Standard resources for ephemeral testnets
- EVM sequencer: 8Gi data storage, 50Gi rollup storage, 2 CPU, 4Gi memory
- high-performance: 2x storage and memory for stress testing
- EVM sequencer: 16Gi data storage, 100Gi rollup storage, 2 CPU, 16Gi memory
Examples¶
Deploy a basic testnet with auto-generated name:
Deploy with custom name and 4-hour lifetime:
Deploy permanent testnet:
Deploy with EVM sequencer from master branch:
# First, generate sequencer configuration
./scripts/setup-sequencer.sh my-testnet
# Then deploy
txpark deploy my-testnet --sequencer --build-branch master
Deploy with high-performance profile for stress testing:
Output Example¶
Deploying testnet
name: my-testnet
namespace: testnet-my-testnet
platform: alpine
Testnet will auto-delete after 1h0m0s
Creating namespace...
✓ Namespace created
Setting up sequencer configuration...
✓ Rollup keys secret created
✓ Kernel setup ConfigMap created
✓ Octez-binaries PVC created
✓ Sequencer setup complete
Triggering CI pipeline for branch 'master'...
✓ Pipeline triggered: 12345
Installing Helm chart...
✓ Helm release installed: my-testnet
✅ Testnet deployed successfully!
Testnet: my-testnet
Namespace: testnet-my-testnet
Endpoints:
Dashboard: https://my-testnet.txpark.nomadic-labs.com/
Blockscout Explorer: https://my-testnet-blockscout.txpark.nomadic-labs.com/
Faucet: https://my-testnet-faucet.txpark.nomadic-labs.com/
EVM RPC: https://my-testnet.txpark.nomadic-labs.com/rpc
Smart Rollup Node: https://my-testnet.txpark.nomadic-labs.com/rollup
TzKT API: https://my-testnet.txpark.nomadic-labs.com/tzkt
Lifetime: 1h0m0s (automatic cleanup)
Manage testnet:
Status: txpark status my-testnet
Logs: txpark logs my-testnet
Destroy: txpark destroy my-testnet
list¶
List all running testnets in the cluster.
Usage¶
Flags¶
| Flag | Type | Default | Description |
|---|---|---|---|
--output, -o <format> |
string | table | Output format: table, wide, json, yaml |
--owner <username> |
string | - | Filter by owner username |
--expired |
bool | false | Show only expired testnets |
--older-than <duration> |
string | - | Show testnets older than duration (e.g., 7d, 24h) |
--sort-by <field> |
string | age | Sort by: name, age, owner, expiration |
Examples¶
List all testnets (table format):
List with detailed output including endpoints:
List testnets owned by specific user:
List only expired testnets:
List testnets older than 7 days:
Sort by expiration time:
Output as JSON for scripting:
Output Example¶
Table format:
NAME STATUS AGE OWNER EXPIRES
my-testnet Running 2h alice in 2h
test-1234567890 Running 5d bob EXPIRED
prod-testnet Running 30d charlie never
Total: 3 testnet(s)
Wide format:
NAME STATUS AGE OWNER EXPIRES ENDPOINTS
my-testnet Running 2h alice in 2h https://my-testnet.txpark.nomadic-labs.com/
prod-testnet Running 30d charlie never https://prod-testnet.txpark.nomadic-labs.com/
Total: 2 testnet(s)
status¶
Show detailed status of a specific testnet.
Usage¶
Flags¶
| Flag | Type | Default | Description |
|---|---|---|---|
--watch, -w |
bool | false | Watch for status changes (refreshes every 2 seconds) |
Examples¶
Show testnet status:
Watch status updates in real-time:
Output Example¶
═══════════════════════════════════════════════════════════════
Testnet: my-testnet
Namespace: testnet-my-testnet
═══════════════════════════════════════════════════════════════
Metadata:
Created: 2026-03-19 14:00:00 UTC (2h ago)
Owner: alice
TTL: 1h0m0s
Expires: 2026-03-19 15:00:00 UTC (EXPIRED)
Endpoints:
Dashboard: https://my-testnet.txpark.nomadic-labs.com/
Blockscout Explorer: https://my-testnet-blockscout.txpark.nomadic-labs.com/
Faucet: https://my-testnet-faucet.txpark.nomadic-labs.com/
EVM RPC: https://my-testnet.txpark.nomadic-labs.com/rpc
Smart Rollup Node: https://my-testnet.txpark.nomadic-labs.com/rollup
TzKT API: https://my-testnet.txpark.nomadic-labs.com/tzkt
Components:
NAME STATUS READY RESTARTS AGE
evm-sequencer-6d4b8c9f7-x9k2m Running 2/2 0 2h
my-testnet-blockscout-xxx Running 1/1 0 2h
my-testnet-tzkt-api-xxx Running 1/1 0 2h
my-testnet-tzkt-sync-xxx Running 1/1 0 2h
my-testnet-postgresql-0 Running 1/1 0 2h
Ingresses:
NAME HOST TLS
my-testnet-main my-testnet.txpark.nomadic-labs.com ✓
my-testnet-blockscout my-testnet-blockscout.txpark.nomadic... ✓
my-testnet-faucet my-testnet-faucet.txpark.nomadic-labs... ✓
logs¶
Show logs from a specific testnet component.
Usage¶
Available Components¶
| Component | Description |
|---|---|
evm-sequencer |
EVM sequencer node (default container) |
smart-rollup-node |
Smart rollup node (sidecar container) |
kernel-builder |
Kernel builder (init container) |
rollup-originator |
Rollup originator (init container) |
l1-node |
L1 Tezos node |
tzkt-sync |
TzKT indexer sync service |
tzkt-api |
TzKT API service |
blockscout |
Blockscout explorer |
tzkt-postgresql |
TzKT PostgreSQL database |
Flags¶
| Flag | Type | Default | Description |
|---|---|---|---|
--follow, -f |
bool | false | Stream logs in real-time |
--tail <lines> |
int | 100 | Number of lines to show from the end |
--container, -c <name> |
string | - | Specific container name (overrides component default) |
--timestamps |
bool | false | Include timestamps in log output |
--since <duration> |
string | - | Show logs since duration (e.g., 1h, 30m) |
Examples¶
Show last 100 lines of EVM sequencer logs:
Follow logs in real-time:
Show last 50 lines:
Show logs with timestamps:
Show logs from specific container in multi-container pod:
Show logs from init container:
Output Example¶
2026-03-19 14:23:45 [INFO] Starting EVM sequencer...
2026-03-19 14:23:46 [INFO] Connecting to L1 node at http://l1-node:8732
2026-03-19 14:23:47 [INFO] EVM sequencer started successfully
2026-03-19 14:23:48 [INFO] Processing block #1234
2026-03-19 14:23:49 [INFO] Block #1234 processed in 250ms
shell¶
Open an interactive shell in a testnet pod.
Usage¶
Available Components¶
evm-sequencer(default)l1-nodetzkt-synctzkt-apitzkt-postgresql
Flags¶
| Flag | Type | Default | Description |
|---|---|---|---|
--component, -c <name> |
string | evm-sequencer | Component to connect to |
--container <name> |
string | - | Specific container name |
--env <environment> |
string | - | Switch to environment first (not yet implemented) |
Examples¶
Open shell in EVM sequencer pod:
Open shell in specific component:
Or using positional argument:
Open shell in specific container:
Interactive Session Example¶
$ txpark shell my-testnet evm-sequencer
Opening shell in pod: evm-sequencer-6d4b8c9f7-x9k2m (testnet: my-testnet)
# Now you're inside the pod
$ ls -la /octez-binaries/
total 245M
-rwxr-xr-x 1 root root 42M octez-evm-node
-rwxr-xr-x 1 root root 156M octez-node
-rwxr-xr-x 1 root root 47M octez-smart-rollup-node
$ octez-evm-node --version
octez-evm-node 19.0
$ exit
upgrade¶
Upgrade testnet binaries without losing data.
Usage¶
This performs a rolling restart of the EVM sequencer with updated binaries while preserving all blockchain data and state.
Flags¶
| Flag | Type | Default | Description |
|---|---|---|---|
--build-branch <branch> |
string | - | GitLab branch to fetch binaries from |
--copy-local-binaries |
bool | false | Copy binaries from local $TEZOS_SOURCE (not yet implemented) |
Binary Source Required
You must specify either --build-branch or --copy-local-binaries to provide the binary source.
Upgrade Process¶
The upgrade follows these steps:
- Verifies testnet exists
- Triggers CI pipeline (if using
--build-branch) - Updates Helm release with new binary configuration
- Performs rolling restart of EVM sequencer pod
- Waits for pod to be ready with new binaries
- Verifies upgrade success
Examples¶
Upgrade to binaries from a different branch:
Upgrade to latest master binaries:
Output Example¶
Upgrading testnet binaries
testnet: my-testnet
branch: feature-branch
Fetching current release...
Current pipeline: 12345
Triggering CI pipeline for branch 'feature-branch'...
✓ Pipeline triggered: 12346
Upgrading Helm release...
✓ Helm release upgraded: my-testnet (revision 2)
✅ Testnet upgrade initiated!
The EVM sequencer pod will restart with new binaries.
Monitor progress: txpark status my-testnet --watch
View logs: txpark logs my-testnet evm-sequencer --follow
Pipeline ID: 12345 → 12346
destroy¶
Destroy a testnet and all its resources.
Usage¶
Destructive Operation
This action cannot be undone. All data, including blockchain state and persistent volumes, will be permanently deleted.
Flags¶
| Flag | Type | Default | Description |
|---|---|---|---|
--force, -f |
bool | false | Skip confirmation prompt |
--dry-run |
bool | false | Preview what would be deleted without actually deleting |
What Gets Deleted¶
- All pods (EVM sequencer, Blockscout, TzKT, PostgreSQL)
- All persistent volumes and data
- All ingresses and SSL certificates
- All ConfigMaps and Secrets
- The namespace itself
Examples¶
Destroy a testnet (with confirmation):
Force destroy without confirmation:
Preview what would be deleted (dry run):
Output Example¶
With confirmation:
═══════════════════════════════════════════════════════════════
Testnet: my-testnet
Namespace: testnet-my-testnet
Created: 2026-03-19 14:00:00 UTC
Owner: alice
═══════════════════════════════════════════════════════════════
Resources to be deleted:
Namespace: 1
Pods: 5
Persistent Volumes: 3
Services: 6
Ingresses: 3
ConfigMaps: 4
Secrets: 2
⚠️ This action cannot be undone. Delete testnet 'my-testnet'? [y/N]: y
Destroying testnet...
✓ Helm release deleted
Deleting namespace and all resources...
Waiting for cleanup to complete.....
✅ Testnet destroyed successfully!
All resources have been deleted:
• 5 pods stopped
• 3 persistent volumes released
• 3 ingresses removed
• Namespace 'testnet-my-testnet' deleted
Dry run:
═══════════════════════════════════════════════════════════════
Testnet: my-testnet
Namespace: testnet-my-testnet
...
═══════════════════════════════════════════════════════════════
Resources to be deleted:
Namespace: 1
Pods: 5
Persistent Volumes: 3
...
✓ Dry run complete (no resources were deleted)
version¶
Show version information for the txpark CLI.
Usage¶
Or using the global flag:
Output Example¶
Common Patterns¶
Quick Testnet Lifecycle¶
# Deploy
txpark deploy test-123
# Check status
txpark status test-123
# View logs
txpark logs test-123 evm-sequencer --follow
# Debug with shell
txpark shell test-123
# Clean up
txpark destroy test-123
Production Testnet¶
# Deploy permanent testnet with high performance
txpark deploy prod --permanent --profile high-performance --sequencer --build-branch master
# Monitor continuously
txpark status prod --watch
# Upgrade when needed
txpark upgrade prod --build-branch stable-branch
Batch Operations¶
List and process testnets with jq:
# Get all expired testnets
txpark list --output json | jq -r '.[] | select(.Status == "Expired") | .Name'
# Destroy all expired testnets
txpark list --output json | jq -r '.[] | select(.Status == "Expired") | .Name' | \
xargs -I {} txpark destroy {} --force
Next Steps¶
- See Workflows for real-world usage scenarios
- Read Best Practices for testnet management tips
- Check Development to contribute to txpark