# Build a service desk with the Cumulus SDK

This walkthrough uses fictional data and actual local SDK checks. The remote deployment and phone steps are explained; they are not executed in this clip.

## 00:00 Ownership

A caller wants delivery or repair information. This fictional service desk gets its answer from a tool in your existing application. Cumulus runs the published conversation graph. Your backend runs the tool and owns its business records. This walkthrough shows actual local SDK checks. The later deployment and phone steps are explained separately; no live call is claimed here.

## 00:28 Install

The example installs Cumulus SDK version zero point three point four from the pinned archive. The SDK supports Node twenty two and newer, with ESM and CommonJS. This example needs Node twenty two point thirteen for SQLite. We build TypeScript and run the installed Cumulus validator. These successful local checks validate composition and the packaged contract. Go and carrier behavior still need separate checks.

## 00:59 Graph

The graph asks for a topic, calls the guide tool, and explains the returned guidance. Its failure edge says the lookup was unavailable. The caller can stop, and both result paths lead to an end node. These definitions are serializable objects built with the SDK's define functions. Publishing sends configuration, while the tool implementation stays in your application.

## 01:27 Customer

The customer route authenticates and validates the request, then delegates to a workflow and repository. The run identifier and conversation identifier are different. The effect identity comes from the idempotency header. Here the synthetic lookup and its receipt commit together in SQLite. The tests reopen storage, replay the request, and reject changed input. External provider effects need their own durable intent and reconciliation.

## 01:59 Bindings

Bindings connect logical names to your HTTPS endpoint, pinned secret references, and an imported dedicated number. Secret bytes are supplied separately to your backend. The inbound resolver returns one declared string marker; it does not verify a person. The event receiver verifies the original signed bytes and durably ignores duplicate event identities. Those behaviors are exercised locally, without dialing.

## 02:29 Release

Select an explicit development API origin and tenant. Preview reads remote changes for review. Apply writes a revision checked draft, and publish asks Go to validate an immutable version. Live publication also advances the head. Assigning the dedicated number is another operation, and placing a real call with this CLI requires explicit confirmation. A test phone run can still dial and execute real tools.

## 03:01 Results

After a call, inspect terminal state, transcript completeness, tool effects, then inspect recording and analysis readiness separately. A completed call is not proof of business success. A waiting timeout does not cancel it. For a Studio edit, export the public draft, manually backport the intended change to source, and explicitly adopt the reviewed revision. Another concurrent edit still causes a conflict.

## 03:33 Reproduce

Start with the complete tutorial and downloadable service desk source. Run the pinned install, local tests and validator first. Then configure your own endpoint and selected tenant, review the remote plan, and perform the dedicated phone session deliberately. The guide links each step to its reference, recovery instructions and private keypad boundaries. Local package proof and live media acceptance remain separate.
