5-minute quickstart
Create a Kite project and turn two product events into customer state locally.
Create a working Customer Success model, run it locally, and see customer state change after
two events. You will not deploy configuration or send customer data to live.
Before you begin
You need Node.js 20 or newer, a Kite account with an organization, and the Kite CLI:
npm install --global @kitesdk/cli
kite --versionUsing Kite Cloud
The CLI uses https://api.usekite.cloud by default. Set KITE_API_URL only when you
intentionally connect to a self-hosted API. See Installation
for the complete setup and troubleshooting guide.
1. Sign in
Start the browser login, then confirm the active account and organization:
kite auth login
kite whoamiThe CLI stores a revocable session outside your project. It does not write credentials to the repository.
2. Create a project
Create an empty directory and generate the starter model:
mkdir acme-kite
cd acme-kite
kite init --name "Acme" --slug acme --stack node --env test --yeskite init creates the remote project and a working local model with lifecycle, journey,
rule, segment, health, and signal definitions.
Store the API keys
The command prints the test and live API keys exactly once. Put them in your secret manager. Never commit them to Git, paste them into tickets, or expose them in browser code.
3. Validate the model
kite validateValidation compiles the TypeScript DSL and checks references across all generated definitions. It does not deploy configuration.
4. Start the local engine
kite devKeep this terminal open. The engine listens on http://127.0.0.1:4401 and automatically
reloads when configuration files change.
5. Send two events
Open a second terminal. Create a customer, then record its first meaningful product usage:
curl -X POST http://127.0.0.1:4401/events \
-H "content-type: application/json" \
-d '{"customerId":"customer_123","event":"account.created","properties":{"plan":"pro"}}'curl -X POST http://127.0.0.1:4401/events \
-H "content-type: application/json" \
-d '{"customerId":"customer_123","event":"feature.used","properties":{"feature":"reports"}}'Each request returns accepted: true with the customer's computed state. The kite dev
terminal also shows a summary similar to:
[12:34:56] EVENT feature.used
Customer customer_123
State lifecycle=trial health=... segments=...Windows PowerShell
Replace curl with curl.exe. PowerShell's curl alias handles these flags differently.
Make the model yours
You now have the complete local loop:
event -> evaluation -> lifecycle, journey, segment, health, and signalsExplore the generated files to see how that state is defined:
| File | What it defines |
|---|---|
kite.config.ts | Event and customer-trait schemas |
journeys/onboarding.ts | Onboarding milestones |
states/lifecycle.ts | Lifecycle transitions |
health/overall.ts | Health derived from customer behavior |
Change a condition in journeys/onboarding.ts and save it. After kite dev confirms that the
configuration reloaded, validate it again:
kite validateSend the events again with a new customer ID. A fresh ID gives you a clean event history and makes the result easy to compare.
Next steps
You created and exercised a versioned Customer Success model without touching production.
- Read Config Reference to understand every definition type.
- Choose a stable customer identity and event taxonomy.
- Model one measurable customer outcome at a time.
- Validate locally, then deploy deliberately to
test.