---
title: Quickstart
description: Clone HermesOS, build the workspace, run the test suite, and serve the API.
url: https://hermesos.thally.app/quickstart
---

# Quickstart

Clone HermesOS, build the workspace, run the test suite, and serve the API.

By the end of this page you will have HermesOS built locally, its test suite
passing, and the API service answering health checks.

## Before you begin

You need **Node.js 22 or later** and **pnpm 11**. The repository pins its
package manager, so the simplest way to get the right pnpm is corepack:

```bash
corepack enable
```

## Build the workspace

```bash
git clone https://github.com/Induj1/HermesOS.git
cd HermesOS
pnpm install
pnpm build
```

`pnpm build` compiles every package in dependency order. Later commands assume
it has run at least once.

## Run the tests

```bash
pnpm test
```

You should see roughly **2465 tests** pass. The full gate that CI runs is:

```bash
pnpm lint
pnpm typecheck
pnpm format:check
pnpm test
```

> **Tip:**
  Type-checking and the test suite are deliberately not part of the pre-commit
  hook, which formats and lints staged files only. A hook that takes a minute is
  a hook people disable with `--no-verify`.

## Serve the API

```bash
pnpm --filter @hermes/api build
PORT=3000 node apps/api/dist/main.js
```

Confirm it is alive:

```bash
curl http://127.0.0.1:3000/livez
```

The service exposes four routes:

| Route | Purpose |
| --- | --- |
| `GET /` | Service identity |
| `GET /livez` | Liveness — is the process up |
| `GET /readyz` | Readiness — are dependencies reachable |
| `GET /metrics` | Prometheus metrics |

## What success looks like

- `pnpm build` completes with no errors
- `pnpm test` reports every package passing
- `curl /livez` reports the service healthy

## Next steps

#### [Understand missions and tasks](/concepts/missions-and-tasks)

    How a goal becomes a running graph.

#### [Write your first tool](/guides/write-a-tool)

    Give an agent a capability it can actually call.

> **Note:**
  `@hermes/cli` gives you schema-less argument parsing, command dispatch, and
  injected IO for building your own command-line tools. There is no shipped
  `hermes` executable — an application wires its own commands.