Testing Locally
Before publishing an agent, you’ll want to test it thoroughly. Selu runs entirely in Docker, so your local testing workflow revolves around the web chat, container logs, and direct capability invocation.
Installing your agent
Section titled “Installing your agent”Place your agent directory (containing agent.yaml and agent.md) inside the installed_agents folder that is volume-mounted into the Selu container. If you followed the default Docker setup, this is the installed_agents directory next to your docker-compose.yml:
installed_agents/ my-agent/ agent.yaml agent.mdAfter adding or modifying an agent, restart Selu so it picks up the changes:
docker compose restartSelu scans the installed_agents directory on startup and loads every valid agent it finds.
Testing in the web chat
Section titled “Testing in the web chat”Open http://localhost:3000 in your browser. Select your agent from the agent list, then send messages to test its behaviour. This is the fastest way to iterate on your system prompt and verify end-to-end behaviour.
Viewing logs
Section titled “Viewing logs”All Selu logs are available through Docker Compose:
docker compose logs selu # Selu orchestrator logsdocker compose logs selu -f # follow (stream) logs in real timedocker compose logs selu --tail 50 # last 50 linesThe orchestrator logs include agent loading, LLM calls, capability invocations, and errors. This is the first place to look when something isn’t working.
Debugging capabilities
Section titled “Debugging capabilities”If a capability isn’t behaving as expected, there are several approaches.
Check capability container logs
Section titled “Check capability container logs”Each capability runs in its own container. List running containers and inspect their logs:
docker compose ps # list all containersdocker compose logs <capability-service> # logs for a specific capabilityCapability containers write to stdout/stderr, which Docker captures.
Manual gRPC call
Section titled “Manual gRPC call”Use grpcurl to invoke a capability directly, bypassing the orchestrator. This is useful for isolating whether a problem is in the capability itself or in the agent’s routing:
grpcurl -plaintext \ -d '{"tool_name": "weather_lookup", "parameters": "eyJsb2NhdGlvbiI6ICJCZXJsaW4ifQ=="}' \ localhost:50051 selu.capability.Capability/InvokeShell into the container
Section titled “Shell into the container”For deeper debugging, open a shell inside the capability container:
docker exec -it <container-name> /bin/shFrom there you can inspect files, check environment variables, test network connectivity, or run the capability’s code manually.
Environment variables and credentials
Section titled “Environment variables and credentials”Capabilities that need API keys or configuration can read from environment variables. You can set these in your docker-compose.yml or in a .env file that Docker Compose loads automatically.
WEATHER_API_KEY=your-api-key-hereNext steps
Section titled “Next steps”Once your agent works locally, review the Marketplace Guidelines to prepare for publication.