| name | service-manage |
| description | Manage services in Kurtosis enclaves. Add, inspect, stop, start, remove, update services. View logs, shell into containers, and execute commands. Use when you need to interact with running services. |
| compatibility | Requires kurtosis CLI with a running engine and at least one enclave. |
| metadata | {"author":"ethpandaops","version":"1.0"} |
Service Manage
Manage services running inside Kurtosis enclaves.
List services
kurtosis enclave inspect <enclave-name>
View logs
kurtosis service logs <enclave-name> <service-name>
kurtosis service logs <enclave-name> <service-name> -f
kurtosis service logs <enclave-name> <service-name> -a
Shell and exec
kurtosis service shell <enclave-name> <service-name>
kurtosis service exec <enclave-name> <service-name> -- ls -la /data
kurtosis service exec <enclave-name> <service-name> -- sh -c "cat /etc/hosts | grep localhost"
Inspect a service
kurtosis service inspect <enclave-name> <service-name>
Shows detailed info including ports, status, and container ID.
Stop and start
kurtosis service stop <enclave-name> <service-name>
kurtosis service start <enclave-name> <service-name>
Remove a service
kurtosis service rm <enclave-name> <service-name>
Add a service manually
kurtosis service add <enclave-name> <service-name> <image>
Update a service
kurtosis service update <enclave-name> <service-name>
Common patterns
Verify after operations
Always confirm stop/start/rm succeeded:
kurtosis enclave inspect <enclave-name>
kurtosis service exec <enclave-name> <service-name> -- wget -qO- http://localhost:8080/health
Check if a service is healthy
kurtosis service exec <enclave-name> <service-name> -- wget -qO- http://localhost:8080/health
kurtosis service exec <enclave-name> <service-name> -- ps aux
kurtosis service exec <enclave-name> <service-name> -- netstat -tlnp
Debug a crashing service
kurtosis service logs <enclave-name> <service-name>
kurtosis service logs <enclave-name> <service-name> -a
kurtosis service inspect <enclave-name> <service-name>
Copy data between services
Use file artifacts in Starlark:
artifact = plan.store_service_files(service_name="source-svc", src="/data/output", name="shared-data")
plan.add_service(name="dest-svc", config=ServiceConfig(
image="my-image",
files={"/input": artifact},
))
Troubleshooting
| Symptom | Cause | Fix |
|---|
| Service won't start | Port conflict or image issue | Check logs with kurtosis service logs, verify image exists |
| Exec command hangs | Container has no shell | Use a base image with shell or exec -- /bin/sh -c "command" |
| Logs show no output | Service crashed immediately | Use kurtosis service logs -a to see full history |
| Service not listed | Wrong enclave | Run kurtosis enclave ls and kurtosis enclave inspect to find it |
| Stop has no effect | Service already stopped | Check status with kurtosis enclave inspect first |