Appearance
Getting started
A five-minute walkthrough: sign up, create a flag, evaluate it from your code.
1. Sign up
Head to useactuator.ai and click Sign up. You'll be asked for an email, a display name, and an organization name. The org slug is derived from the org name and shown to you before you submit.
A magic-link email lands in your inbox. Click the link to confirm and you're signed in to the dashboard.
2. Create a project and environment
In the dashboard:
- Click New project. Pick a key (e.g.
web) and a name (e.g.Web app). Optionally set a target ID field — the attribute key Actuator uses for percentage rollout stickiness (defaultuser_id). - Inside the project, click New environment. Common shapes are
dev,staging,production. The key is immutable once created; the name is editable.
Every environment starts with an empty ruleset, so evaluation works immediately — primitives you create at the project level seed default state into every environment automatically.
3. Create a flag
From the project page, click New flag:
- Key —
new-onboarding(lowercase, dot-separated is conventional). - Type —
booleanfor an on/off flag,stringfor a multi-variant flag. - Default value — what callers get when no rule matches.
- Description (optional) — what this flag controls.
The flag is created at the project level and seeded into every environment with rules: [] and the default value you supplied. You can edit the rules and default per environment from the flag's detail page.
4. Mint an API key
Under Org settings → API keys, click Mint key. You'll be shown the raw token exactly once — copy it now. Store it as an environment variable in your app:
bash
export ACTUATOR_API_KEY=act_…API keys are bearer tokens. Send them as Authorization: Bearer act_… on every request.
5. Evaluate from your code
ts
import { ActuatorClient } from '@actuator/sdk'
const client = new ActuatorClient({
baseUrl: 'https://useactuator.ai',
apiKey: process.env.ACTUATOR_API_KEY,
})
const { evaluations } = await client.evaluate(envId, {
context: { userId: 'u_42', plan: 'pro' },
keys: ['new-onboarding'],
})
if (evaluations['new-onboarding']?.value === true) {
// show the new onboarding
}bash
curl -X POST https://useactuator.ai/api/v1/envs/$ENV_ID/evaluate \
-H "Authorization: Bearer $ACTUATOR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"context": { "userId": "u_42", "plan": "pro" },
"keys": ["new-onboarding"]
}'swift
import Actuator
let client = ActuatorClient(
baseURL: URL(string: "https://useactuator.ai")!,
apiKey: ProcessInfo.processInfo.environment["ACTUATOR_API_KEY"]!
)
let result = try await client.evaluate(
environmentID: envID,
context: ["userId": "u_42", "plan": "pro"],
keys: ["new-onboarding"]
)
if case .bool(true) = result.evaluations["new-onboarding"]?.value {
// show the new onboarding
}The response carries one envelope per requested key: the resolved value, the defaultValue, and a structured reason describing why that value was returned (which rule matched, the rule index, the matched value).
6. Add a targeting rule
From the flag detail page, click Add rule:
- Condition —
plan equals "enterprise". - Value —
true.
Save. Now an evaluation with context: { plan: "enterprise" } returns true; everything else still gets the default. The audit log records who made the change, when, and what changed (the previous and new ruleset are both stored).
What's next
- Concepts — understand the building blocks: flags, configs, segments, rules, contexts, evaluation.
- Agents and AI — give an AI agent scoped access with the propose / apply workflow.
- API reference — full reference for every endpoint.