Inspiration
Maritime traffic is becoming increasingly complex. Large commercial vessels, narrow waterways, weather, sea conditions, temporary restrictions, and limited tug availability create an environment where a single miscalculation can cause significant delays or safety issues.
We set out to build something bigger than a simple chatbot, but that could reason over vessel operations, query live operational information, execute decisions, and maintain an auditable trail of decisions made
and why
MISSOURI ARBITER was born: an AI maritime traffic orchestration system, which serves as an intelligent layer for complex river and port operations.
What it does
MISSOURI ARBITER is an AI maritime operations coordinator. An operator can ask it questions like:
Can this vessel safely transit the channel?
Who should be dispatched to assist the vessel?
What should happen if the channel becomes restricted?
Do I need to redirect this vessel?
What environmental or traffic factors might impact the decision?
What has already happened?
Instead of simply providing an answer, MISSOURI ARBITER has the ability to inspect vessel information, channel restrictions, tug dispatch availability, traffic, and even operational memory to execute the right tools and arrive at a conclusion. Every important decision has the ability to be snapshotted into an audit ledger, for explainability and traceability.
How we built it
Our stack is comprised of multiple agents, tools, and databases that power MISSOURI ARBITER:
AI Agent - orchestrates reasoning and tool calling
AWS Bedrock - provides production grade foundation model layer
MCP/tool architecture - allows the agent to operate on tools and not just language
CockroachDB Cloud - stores vessel information, channels, restrictions, reservations, operational memory, and audit trail
Traffic Simulator - provides the ability to dynamically simulate various maritime traffic conditions
FastAPI backend - connects the agent, database, tools, simulators, and frontend
Interactive maritime dashboard - provides the operator with a command-center like interface
We added additional serialization logic to allow recursive data translation between database types (e. g
DECIMAL
,
UUID
, etc.) and the agent/tool layer.
Challenges we ran into
One of the biggest challenges we had was getting an AI agent to operate over real database backed tools, as opposed to simple text generation. CockroachDB's use of
NUMERIC
type fields meant that a lot of the default JSON serialization techniques broke within the agent layer. We had to perform a deep dive into the database/tool/agent/api stack to identify and resolve the issue, and eventually added a recursive data layer that handles serialization between the two.
A lot of the time was spent architecting the agent to be able to make decisions as a result of tool calling, such as validating vessel constraints, evaluating channels, finding available tugs, creating reservations, and logging to the audit trail.
Finally, we had to think deeply about deployment, cloud credentials, database connections, API reliability, and how to present a complex system with a simple operator interface.
Accomplishments we're proud of
We are very proud to have built MISSOURI ARBITER as more than just an interface to an AI model. Our testing has shown that we have achieved end-to-end operational decision making including:
Connections to CockroachDB Cloud
Multi-step agentic decision making
Vessel/channel constraint evaluation
Available tug identification
Route restriction and rerouting
Hydrodynamic operational memory
Reservation lifecycle management
Decision ledgering/auditability
Dynamic traffic simulation
AWS Bedrock connection layer
Working with Cockroach-specific data types (DECIMAL, UUID, etc.)
An interactive maritime operations dashboard
Essentially, we set out to build an AI system that could reason, make decisions, and log its decision making process. We believe we've succeeded in doing so with MISSOURI ARBITER.
What we learned
We learned that building an agentic system is fundamentally different than building a chatbot. While some similar concepts apply, the complexity is increased dramatically when you introduce real tools, databases, transactions, and audits. The most important lessons we learned revolved around building the supporting infrastructure around the model itself, not just what the model can do. Things like tooling, database design, transactions, validation, observability, and auditing take up a huge amount of the workload when building an agentic application. Finally, we learned firsthand that the best applications are built when you layer reasoning, data, actions, and accountability on top of one another.
What's next for MISSOURI ARBITER
MISSOURI ARBITER is just the beginning. We see this as a foundational layer upon which we can develop a much larger maritime intelligence platform in the future.
We intend to expand MISSOURI ARBITER to include features such as:
Real-time vessel tracking via AIS
Weather, current, wind, and water-level ingest
Congestion and collision prediction
Larger-scale port and river optimization
Berth and tug scheduling
Digital twin infrastructure
Predictive maintenance and infrastructure intelligence
Coordinated multi-agent operations between vessels, ports, and authorities
Sophisticated simulation and response for extreme maritime events
Explainable AI reports for regulatory agencies
Our ultimate goal is to build an maritime operations intelligence layer that has true predictive capabilities, allowing it to understand what conditions will exist on a waterway at a given time, and how operators could best prepare for them.
MISSOURI ARBITER is not just an interesting experiment: it is the foundation for turning our waterways into something greater.
Built With
- agentic-ai
- ai-agents
- amazon-nova-lite
- aws-bedrock
- boto3
- cloud-computing
- cockroachdb
- css3
- fastapi
- html5
- javascript
- maritime-technology
- mcp
- postgresql
- python
- rest-api
- uvicorn
Log in or sign up for Devpost to join the conversation.