Raw capture â raw/shippy-tech-blog.md
url: https://huggingface.co/blog/allenai/shippy-tech-blog title: "What building Shippy taught us about building agents" author: Kyle Wiggers (Ai2Comms) date_fetched: 2026-07-18 date_published: 2026-07-15
Published: July 15, 2026 Author: Kyle Wiggers (Ai2Comms) Organization: Ai2 (Allen Institute for AI)
Shippy is a maritime AI agent for real-time ocean domain awareness, built by the Skylight team at Ai2. The article focuses on the system architecture behind reliability in high-stakes operational settings.
The authors decompose agents into three components:
The soul and skills are baked into a versioned Docker image; config changes don't require a rebuild. Skills follow the "agent-skills spec" used by Claude Code and Codex, using "plain markdown files with structured frontmatter."
A single query like "Are there vessels operating near the Cordillera de Coiba MPA?" draws on three skills simultaneouslyâSkylight data query, ProtectedSeas MPA boundary context, and vessel track interpretationâ"all in a single dialogue turn."
Shippy "won't make legal determinations about whether a vessel is breaking the law" and "won't speculate beyond what the data supports." These are explicit in the system prompt, not implicit in fine-tuning.
The core insight: agents are unpredictable, but their tools can be made reliable.
Shippy communicates with Skylight through a purpose-built CLI rather than raw API calls. The API has "dozens of input types, nested filter objects, pagination cursors, and complex geometry inputs." Early prototypes where Shippy constructed API calls directly produced "a steady stream of subtle bugs."
skylight events search with typed filter flags--help text and detailed error messagesA standardized API with multiple resource types (Events, vessels, regions, satellite imagery, vessel tracks) accessible through two operations: search and aggregate.
"Each layer narrows what the next layer can get wrong." The API has its own test suite, the CLI can be exercised by human or agent, and skills reference CLI commands.
Skylight serves "hundreds of government agencies and NGOs across over 70 countries." Data isolation is criticalâa fisheries officer in the Philippines sees only their own data.
An agent hosting platform built by the team that "provisions a dedicated Kubernetes deployment for each user session." When a conversation opens, pods spin up packaging the agent runtime, skills, and Skylight CLI. The user's JWT is injected at provision time.
The team rejected static benchmarks and built their own eval system that "scor[es] the whole agent â model, skills, and sandbox together â against live data."
Tasks run through Harbor, an open evaluation framework. The team wrote a Harbor plugin that spins up a real Shippy session against live data. The suite runs in parallel against a specific versioned build, producing timestamped results and a delta report.
Shippy is opening to early adopters on a rolling basis. Three planned improvements:
The architecture is already influencing other Ai2 platformsâEarthRanger (wildlife conservation) and OlmoEarth (Earth observation tools). "Mothership was built to be general and to host other agents, so while maritime is the first domainâŚwe don't expect it to be the last."
Built by the Skylight team at Ai2. Skylight is a free maritime domain awareness platform with "300+ partners across 70 countries."
A question about how the agent tracks which CLI output files correspond to which calls: does the agent specify the output path, or does the CLI generate a unique filename? Also asks about file management across long sessions.