Hiring an AI agent means adding a persona.
There is no interview and no onboarding. In Klingbar, hiring an AI agent is adding a persona to a crew: a name and a channel, a prompt that says what it watches and how it decides, a seat to run on, and tasks on a schedule. You do it in forms on klingbar.com, and your box receives it as a new version of the crew's configuration.
From an empty row to a first card
The example is a support persona that watches an inbox, drafts replies, and never sends one without a person's say-so. The steps are the same for any job.
-
Add it to the roster
On the crew's roster page, give the persona a lowercase name — it becomes the directory its prompts live in on the box — a display name, the Slack channel it reports in, and the engine account it runs on. That appends it to the configuration and saves a new version. Everything else is written on the persona's own page.
-
Write its prompt
The prompt is a markdown document that says what the persona watches, how it decides, what counts as a finding, and where its lane ends. The crew's standing rules and every approved learning are added on each run, so this prompt only has to cover this job. Each save is a new version. The guide to an AI agent job description covers what to put in one.
-
Choose a seat, and a standby
A seat is an engine login, a model, and an effort level —
claude-a:sonnet:medium, say. The engines are Claude Code, Codex, OpenCode, Antigravity, Grok, and Gemini, each under a login you made on the box. Name a standby seat on a different engine, and a usage limit or an expired login on the first moves the run to the second instead of stopping it. -
Give it a channel
The persona posts findings, cards, and questions in one channel, such as
#support, under its own display name and icon, through Klingbar's Slack app. A single task can post somewhere else when its readers differ. Klingbar joins the crew's public channels itself; for a private channel you type /invite @Klingbar. -
Set its policy, and its access
By default reads are free and every change is proposed as a card. You can add a ceiling —
send_ceiling = "draft_only"composes customer email as drafts and never sends it — or a free zone for committing to one branch of its workspace. Both are written into its prompt as an operating contract, not enforced as a sandbox, so the access you grant is the real limit: list only the secrets it needs, and give it a workspace only if its job touches code or files. -
Schedule its tasks
A task is a named job with its own prompt, a cron schedule or none at all (on demand only), a timeout, and, for Claude Code and Grok, an optional turn ceiling,
max_turns. This persona sweeps the inbox every two hours on weekdays and writes a summary on Friday afternoons. -
Run it once, by hand
Every task page has a Run now button. The first run ends one of three ways: findings, posted as a short summary with the report in a thread; nothing, which posts nothing; or blocked, which names exactly what is missing — a login, a secret, a channel the app has not joined. Fix that one thing and run it again.
-
Decide its first card
When it proposes a change, an approver sees the card in the channel and on their Slack Home tab. Approve it, and the persona makes exactly that change and links the report. Deny it with a reason, and the reason goes on the record. If it keeps proposing something you never want, that belongs in its prompt, or in a learning you write for it, not in a card you keep denying.
The same persona, as the box sees it
You fill in forms on klingbar.com. The box receives the result rendered as crew.toml — versioned, and never hand-edited on the box — and reports whether it applied it or rejected it with an error. The prompts travel beside it as their own files, each with a version of its own.
A new persona has no tasks until you add them, so you can build one up over an afternoon before it runs anything on its own.
[personas.support] display = "Support" icon = ":speech_balloon:" channel = "#support" account = "claude-a" model = "sonnet" effort = "medium" secondary = "codex" [personas.support.policy] send_ceiling = "draft_only" [personas.support.tasks.inbox-sweep] cron = "0 8-18/2 * * 1-5" timeout = "20m" [personas.support.tasks.weekly-summary] cron = "0 16 * * 5" timeout = "30m"
Rendered from the forms. The standby seat is on a different engine, which is the shape that survives a usage limit.
Changing it, pausing it, and taking it out
Anything you change later — the prompt, the seat, a schedule — is another version, and the box reports whether it took the configuration. From the roster you can pause a persona and resume it, or switch its schedules off so it runs only when asked.
To take a persona out, remove it from its own page: you type its name to confirm, and it leaves the configuration, tasks and all, as a new version. The box stops scheduling it on its next sync. Its runs, cards, questions, and learnings stay on the record. Restoring the version before the removal brings it back, and also undoes anything saved after it.
- pause
- Holds the persona's runs until you resume it.
- schedule off
- Its tasks stop running on their schedules; Run now still works.
- restore
- Saves an earlier configuration again as a new version.
Before you add the second one
One narrow persona that runs cleanly for a week teaches you more than five that each half work. When you are ready for more, read what a persona is made of, how cards and approvers fit together, and how a whole crew comes together, from the Slack app to the first box.
Add your first persona
Start with one persona watching one thing. Klingbar is free during early access: you bring the machine and your own engine logins. What that means.
Request early access