What building Shippy taught us about building agents
Hugging Face agent anatomy: skills, soul, and config Deterministic tools for a nondeterministic agent Sandboxed hosting and isolation Evaluating an agent, not a model Where we're headed Shippy is a maritime AI agent built for high-stakes decisions, where the wrong answer has real impacts. Here’s the architecture behind it—and the lessons we’re carrying into Ai2’s other environmental platforms.
Shippy answering a live query about Ghana’s EEZ. The response shows its work: the boundary source, the data cutoff, the query timestamp, and a deep link back to the Skylight map so the analyst can verify every number. Building an AI agent for a high-stakes operational domain like protecting the ocean is, above all, a problem of reliability. For a maritime analyst, a wrong answer could send a patrol vessel miles in the wrong direction, costing significant resources that are already stretched thin and potentially putting personnel in harm’s way. So when the Skylight team set out to build Shippy, our AI for real-time maritime domain awareness, the real work wasn’t the model. It was building a system we could trust to be correct, to stay within its limits, and to hold up across a wide range of tasks. And we had to verify all of it against Skylight’s live data, updated continuously as new satellite and vessel signals arrive—not a static snapshot. We think of an agent like Shippy as three things: a soul, skills, and config. The soul is the system prompt that frames Shippy’s persona and sets behavioral boundaries. Skills tell Shippy how to handle specific kinds of requests. Together, the soul and skills are baked into a Docker image—a versioned, deployable artifact that defines what Shippy is. Config covers everything else: which agent harness to run (in Shippy’s case, OpenClaw, an open-source agent framework), which LLM to use (currently, Shippy relies on Claude Opus 4.6), and runtime settings. Secrets like API keys are injected at runtime; swapping the model or the harness is a config change, not a rebuild. Shippy’s skills follow the same agent-skills spec used by coding tools like Claude Code and Codex—plain markdown files with structured frontmatter. This keeps each skill comprehensible, versioned, and easy to revise.