---
title: Operations
description: Observe, inspect, test, build, diagnose, and deploy the same checked application graph.
pagination: false
sidebar:
  icon: wrench
---

Use these pages to test application behavior, inspect running work, diagnose failures, and prepare a deployment. Use local telemetry
and the Inspector while developing, deterministic tests for behavior, a reproducible build before release, and
deployment preview only when cloud infrastructure is intentionally configured.

> **Start here**
>
> Start with [Testing](/docs/modules/operations/testing) to verify an application operation. For a
> terminal walkthrough from a new project to a running build, follow [Create and build an
> API](/guides/cli/create-and-build-an-api). Exact helpers are in the [Testing
> reference](/docs/api/testing).

## Pre-setup

Start with local logging and bounded capture; neither requires a telemetry account, exporter,
new `defineEnv` fields, or a Docker service. Merge these settings into your existing `defineApp`
configuration, retaining its environment contract:

```ts title="relkit.config.ts"
/** Local telemetry works without a remote exporter or extra environment secrets. */
import { defineApp, defineEnv } from "@relkit/app/config";

export default defineApp({
  env: defineEnv({}),
  telemetry: {
    redaction: { mode: "development-redacted", maxBytes: 65_536 },
    localRetention: { maxRecords: 2_000, maxAgeMs: 3_600_000, maxBytes: 16_777_216 },
  },
});
```

Run `bun run check` and `bun run dev`, then send a request to an existing route to produce
correlated logs. For a UI, complete the separate [Inspector setup](/docs/modules/operations/inspector):
installation alone does not enable its bridge. Keep your application's Redis, MinIO, database,
and job providers in [local Docker](/docs/modules/integrations/local-docker).

Remote Sentry/OTLP export is optional. Their integrations have no bundled Docker collector
recipe; configure a reachable service and supply its named endpoint/secret bindings only when
selecting that exporter. Those binding references are distinct from application `context.env` fields.

## Choose the operational task

**[Observability](/docs/modules/operations/observability)**

Configure redaction, local evidence, sampling, Sentry, and OTLP.

**[Inspector](/docs/modules/operations/inspector)**

Follow requests through graph nodes, logs, traces, diagnostics, and API contracts.

**[Testing](/docs/modules/operations/testing)**

Test functions and the in-process application with explicit provider fakes.

**[Deployment](/docs/modules/deployment)**

Verify Docker images and choose supported application hosts and runtime providers.

**[Troubleshooting](/docs/modules/operations/troubleshooting)**

Use stable diagnostics to repair the owning source of truth.

**[CLI](/docs/modules/cli)**

Follow terminal workflows and find command syntax and options.

## Use the generated project commands

The minimal starter exposes the normal application lifecycle as package scripts. This manifest is a
reference for the base app; optional feature guides add only their selected dependencies:

```json title="templates/default/v1/minimal/package.json"
{
  "name": "my-app",
  "private": true,
  "type": "module",
  "packageManager": "bun@1.3.10",
  "scripts": {
    "dev": "relkit dev",
    "check": "relkit check",
    "typecheck": "tsc --noEmit",
    "test": "bun test",
    "test:unit": "bun test tests/unit",
    "test:integration": "bun test tests/integration",
    "build": "relkit build",
    "start": "NODE_ENV=production bun run --no-env-file .relkit/build/server/index.js",
    "graph": "relkit graph print"
  },
  "dependencies": {
    "@relkit/app": "0.8.2",
    "@scalar/hono-api-reference": "0.12.9",
    "effect": "4.0.1"
  },
  "devDependencies": {
    "@types/bun": "1.3.10",
    "@relkit/cli": "0.8.4",
    "@relkit/testing": "0.8.2",
    "typescript": "5.9.3"
  }
}
```

During development, run the narrowest check that proves the change. Before releasing an application, run the
complete local sequence:

```sh title="Terminal — relkit-orders"
bun run check
bun run typecheck
bun run test
bun run build
bun run start
```

Building and starting do not create cloud resources. Deployment is a separate, explicit lifecycle.

## Match the repository gate before pushing

RELKIT contributors can run the same locally reproducible CI coverage before a push:

```sh title="Terminal — relkit repository"
bun run prepush
```

That focused merge gate needs no Docker daemon. Use `bun run prepush:full` with Docker available for
full local acceptance, including container/local-service and browser checks. Dependency review is hosted
CI-only. Real AWS acceptance is separately opt-in locally and is not run by CI; it needs explicit
credentials and authorization for cloud cost.

{/* Generated by apps/docs/scripts/generate.ts. Do not edit. */}

**Reference and source**

- [`@relkit/app` API](/docs/api/app)
- [`@relkit/testing` API](/docs/api/testing)

- [`templates/default/v1/api/package.json`](https://github.com/rel-kit/relkit/blob/main/templates/default/v1/api/package.json)
