Steward

Operators build agents (instructions, a model hint, a step limit) and give them tools that map to real server code: look up a customer, create a task, notify the team, email a customer, read an allowlisted web page. A server function runs the agent loop with ctx.ai, logging every plan, tool call and result. Tools marked as needing approval pause the run; reviewers approve or reject from their queue and a workflow resumes it. Each conversation keeps a running summary as memory. Without an AI key the agent follows keyword rules and says so.

Invite-only. Operators build and run agents. Reviewers approve what the agents want to do.

Steward on desktopSteward on a phone

What's inside

Agent console: conversations, memory and a live run log. Reviewer approval queue with the exact email, task or message to approve. Run log with every plan, tool call, result, timing and estimated tokens. Agents, tools, tool access, customers and tasks to manage. Run queue and manual sign-off requests.

Tables

  • operator name, email, title
  • reviewer name, email, title
  • agent name, purpose, instructions, model_hint, max_steps, enabled
  • tool key, name, description, needs_approval, allowlist
  • agent_tool agent_id, tool_id, enabled
  • customer name, contact_name, email, plan, mrr, health, renewal_on, notes
  • task title, details, customer_id, due_on, status, source
  • conversation agent_id, title, operator_id, summary, message_count, last_message_at
  • message conversation_id, role, content, run_id, at
  • run agent_id, conversation_id, trigger, status, answer, ai_mode, steps, est_tokens, …
  • run_step run_id, seq, kind, title, tool_key, input, output, latency_ms, …
  • approval run_id, agent_id, tool_key, action, payload, risk, decision, reviewer_id, …

Roles

  • operator Operator, staff
  • reviewer Reviewer, staff

Pages

  • /console Console (operator)
  • /approvals Approvals (reviewer)
  • /sign-offs Sign-offs (operator)
  • /runs Runs (operator)
  • /run-log Run log (reviewer)
  • /runs/:id Run (operator, reviewer)
  • /conversations Conversations (operator)
  • /conversations/:id Conversation (operator)
  • /agents Agents (operator)
  • /agents/:id Agent (operator)
  • /tools Tools (operator)
  • /tool-access Tool access (operator)
  • and 4 more

Components

  • AgentConsole Chat with an agent: conversations, the thread, its memory and the live run log, plus queued runs to start
  • ApprovalQueue Reviewers' queue of agent and operator actions waiting for approval, with the payload, approve and reject

Rules on every write

  • tool Look-ups and reading allowlisted pages run without approval; only actions can need one
  • approval Approval refused

How its workflows run

Each one is a server workflow in your project: it runs on its trigger, with retries, and its runs show in the builder's log.

  1. Run an agent

    When the app calls it: server function (operator). Then: Look up run, then Create conversation, then Update run, then Notify, then Send email.

  2. Ask reviewers for approval

    When a row changes: approval created. Then: Notify reviewer, then Send email.

  3. Resume the run when a reviewer decides

    When a row changes: approval updated. Then: Update approval, then Look up run, then Notify, then Create run_step, then Send email.

  4. Update the conversation's memory

    When a row changes: run updated, when status is completed. Then: Look up conversation, then Update conversation.

  5. Remind reviewers about waiting approvals

    On a schedule: schedule hourly over approval. Then: Look up approval, then Notify, then Update approval.

Set it up

It starts a new project, with its data, roles and sign-in ready.

  1. Start the project

    Use the button above, or ask your coding agent with the Appbricx MCP server connected (quickstart).

  2. Sign in as each role

    The demo logins open each role's home. Change what you like in plain words or in the contract.

  3. Deploy

    When dev looks right, deploy. Production gets a snapshot first, so you can roll back.

Use it with your coding agent

The agent creates the project, builds it and signs in as each role.

Prompt
Start a new Appbricx project from the Steward template (slug "steward") with use_template. Call it "My Steward", then sign in as each role, verify it and tell me what to change first.
MCP call
{
  "tool": "use_template",
  "arguments": {
    "slug": "steward",
    "name": "My Steward"
  }
}
CLI
appbricx templates use steward --name "My Steward"

Make it yours in plain words.