Skip to main content
This guide takes you from a clean machine to a running UOM stack — databases, MCP adapters, sandboxes, the LangGraph orchestrator, and the Next.js frontend. For what the system does and why it is built this way, see the Introduction and Design Decisions.
UOM is a monorepo. The commands below assume you are at the repository root unless a cd is shown. Source: github.com/corovcam/Universal-Object-Mapping.

1. Development Requirements

Your host environment must satisfy the following:

2. Quick Start

Step 1 — Configure environment variables

Copy the env templates at the workspace root, in frontend/uom-translator-ui, and in services/orchestrator, then fill in your LLM provider keys and base URLs:

Step 2 — Spin up the container stack

Boot the databases, MCP adapters, relational migrator, Daytona stack, and orchestrator backend:
Ensure all healthchecks pass. To reset, run ./scripts/destroy-containers.sh, fix the issue, and retry.

Step 3 — Configure the databases (ETL)

To validate query translations against real data, the target MongoDB and Neo4j databases must hold a logically equivalent copy of the relational source. This is a one-time, semi-automatic ETL step.
Open the MongoDB Relational Migrator dashboard at http://localhost:8091, connect to the SQL Server source, and map the WideWorldImporters dataset into MongoDB. A pre-configured mapping lives in services/etl/mongodb/UOM WideWorldImporters.relmig (import it in the UI). Or run the script:

Step 4 — Create a Daytona API key

So the orchestrator can provision sandboxes:
  1. Open the Daytona dashboard at http://localhost:3000. Authenticate with the defaults: user dev@daytona.io, password password.
  2. Go to API KeysCreate Key. Name it default, set Permissions to Full Access.
  3. Copy the key into DAYTONA_API_KEY in both .env.dev and .env under services/orchestrator.
  4. Rebuild the orchestrator service.
See the Daytona API Keys docs for details.

Step 5 — Start the LangGraph server

In a separate terminal:
The server listens on http://localhost:2024 and opens the LangGraph/LangSmith Agent Studio dashboard automatically.
For development, enable LLM request mocking to avoid rate limits and speed up iteration:
This records LLM requests/responses to a local fixtures directory; point your .env.dev endpoint accordingly. See Observability for tracing setup.

Step 6 — Launch the Next.js frontend

In a third terminal:
Open http://localhost:3001 (port 3001 because the Daytona API already occupies 3000) and start translating. New to the UI? Follow the User Guide.

3. Production Deployment

Configure all production env files (domains, IPs, networking) and run:
For the full production topology — Docker Compose profiles, environment configuration, sandbox timeouts, and init/destroy scripts — see DevOps & Deployment.

4. Where to Go Next

User Guide

Run your first translation in the web UI.

Architecture

Understand the LangGraph state machine.

Contribution Guide

Add a new framework or extend the backend.

Observability

Wire up LangSmith, Logfire, and OpenTelemetry tracing.