Skip to content

Getting Started

  • Docker + Docker Compose
  • Bun
  • Go 1.25+ (agents, MCP)
  • CompileDaemon (go install github.com/githubnemo/CompileDaemon@latest)
  • Tilt
Terminal window
git clone https://github.com/arcnem-ai/arcnem-vision.git
cd arcnem-vision

Copy every .env.example to .env:

Terminal window
cp server/packages/api/.env.example server/packages/api/.env
cp server/packages/db/.env.example server/packages/db/.env
cp server/packages/dashboard/.env.example server/packages/dashboard/.env
cp models/agents/.env.example models/agents/.env
cp models/mcp/.env.example models/mcp/.env

Add your provider keys:

  • OpenAI API keyOPENAI_API_KEY in models/agents/.env
  • Same OpenAI key (recommended)OPENAI_API_KEY in server/packages/api/.env for dashboard collection chat and AI workflow draft generation
  • Replicate API tokenREPLICATE_API_TOKEN in models/mcp/.env

Everything else is already configured for local development. Postgres, Redis, and MinIO come from docker-compose.yaml.

Terminal window
tilt up

Tilt installs dependencies, starts infrastructure, runs migrations, and launches the API, dashboard, agents, MCP server, Inngest, and docs site. Open the Tilt UI at http://localhost:10350 for logs and manual resources like seed and introspection.

In the Tilt UI, trigger seed-database.

The seed creates:

  • a demo organization, project, workflow keys, service keys, and API keys
  • editable workflows and reusable workflow templates
  • sample images for the description, OCR, quality-review, and segmentation paths
  • stored OCR results, descriptions, embeddings, segmentations, and example run history
  • a local debug dashboard session

Because server/packages/api/.env.example enables API_DEBUG=true, the dashboard can bootstrap into the seeded local session after seeding.

  1. Open the dashboard at http://localhost:3001.
  2. In Projects & API Keys, inspect seeded workflow keys, service keys, and their attached workflows.
  3. In Workflow Library, browse templates, click Generate With AI, or open a graph in the canvas.
  4. In Docs, inspect seeded documents or upload a new one from the dashboard.
  5. In Runs, open a run and inspect its initial state, per-step deltas, final state, timing, and errors.

Use a workflow API key to run the automated flow:

Terminal window
curl -X POST http://localhost:3000/api/uploads/presign \
-H "Content-Type: application/json" \
-H "x-api-key: ${API_KEY}" \
-d '{"contentType":"image/png","size":12345}'

Then upload to the returned S3 URL and call /api/uploads/ack. That acknowledgement verifies the object, creates the document, and queues document/process.upload for the workflow key’s bound workflow.

In the Docs tab:

  1. Click Add From Dashboard.
  2. Upload an image into a project.
  3. Open the saved document.
  4. Queue any saved workflow against it.

This path is useful for ad-hoc analysis, reruns, and operator-driven evaluation because the document is not tied to a workflow key by default.

GET http://localhost:3000/health # API
GET http://localhost:3020/health # Agents
GET http://localhost:3021/health # MCP

Default local dev uses MinIO from docker-compose.yaml. The .env.example files ship with working defaults:

  • S3_ACCESS_KEY_ID=minioadmin
  • S3_SECRET_ACCESS_KEY=minioadmin
  • S3_BUCKET=arcnem-vision
  • S3_ENDPOINT=http://localhost:9000
  • S3_REGION=us-east-1
  • S3_USE_PATH_STYLE=true

For hosted storage, substitute your AWS S3, Cloudflare R2, Railway Object Storage, or Backblaze B2 credentials.

  • Set S3_USE_PATH_STYLE explicitly for your provider.
  • Cloudflare R2 commonly needs S3_REGION=auto and S3_USE_PATH_STYLE=false.
  • When the dashboard uploads directly from the browser to storage, some providers such as R2 also need bucket CORS configured to allow your dashboard origin and PUT requests.