Creative Tim UICreative Tim UI

Free · MIT · Open source

Open-source AI agent starters

Four complete Next.js agent apps that ask before they act, and run a labelled demo with no keys.

Sample data Close-ups of each app on its built-in demo data.

Open Research

Ask a question. Get an answer you can check.

It plans searches, reads the most relevant pages and cites every claim with a numbered source.

GitHub repo coming soon
Open Research running its built-in demo on sample data
Sample dataOpen Research, running its built-in demo.
  1. How do AI research agents use tools?

    Ask a follow-up…

    01

    Ask a question

    Type it the way you would ask a colleague.

  2. Web search: How do AI research agents use tools?

    1. 1Large language modelen.wikipedia.org
    2. 2Model Context Protocolmodelcontextprotocol.io

    02

    It searches and reads

    It plans focused searches and reads the most relevant pages.

  3. Large language models generate the text 1, and tools such as search are exposed to them through protocols like MCP 2.

    1. 1Large language modelen.wikipedia.org
    2. 2Model Context Protocolmodelcontextprotocol.io

    03

    You get a cited answer

    Every [n] points at a source a tool actually returned.

Sample data Scenes use the starter's built-in demo data.

One ask to start with

“What changed in the EU AI Act obligations that apply in 2026?”

One ask to start with

“Compare the open-source agent frameworks released this year, with sources.”

Open Research: technical details

Lite and Hermes, capability by capability
CapabilityLiteHermes
Web search with numbered citationsYesYes
Read web pages (SSRF-guarded)YesYes
Approval before side effectsYesYes
Audit row before every tool callYesYes
Save reportsYesYes
Memory across threadsHermes memory toolsetNoYes
Files and terminal in a sandboxEnable the file / terminal toolsets in hermes/config.yamlNoOff by default
Browser for JavaScript-heavy pagesHermes browser_exec; needs the terminal toolsetNoOff by default
Scheduled research (cron)Hermes cron works; this UI does not manage schedules yetNoNot in the UI yet
Runs on serverless hosting (Vercel)Hermes needs a long-running containerYesNo
Environment variables
VariableDefaultWhat it is
OPENAI_BASE_URLhttps://api.companyfabric.com/v1Any OpenAI-compatible chat.completions endpoint with tool calling.
OPENAI_API_KEYnoneThe model key. With none set, the app runs a labelled DEMO.
MODELcompanyfabric/autoThe model id. companyfabric/auto picks a suitable model per request.
SEARCH_PROVIDERparallelparallel (free, rate-limited, no key) or exa. companyfabric is not released yet.
PARALLEL_API_KEYnoneLifts Parallel's free-tier limits.
EXA_API_KEYnoneNeeded when SEARCH_PROVIDER=exa.
COMPANYFABRIC_SEARCH_ENABLEDfalseCompanyFabric search is not released yet; leave it off.
RUNTIMEnonelite or hermes. Empty: hermes when HERMES_URL is set, lite otherwise.
HERMES_URLnoneSet for you by docker-compose.yml.
HERMES_API_KEYnoneHermes only. Generate with: openssl rand -hex 32
TOOL_TOKENnoneHermes only: lets Hermes call the app's tools at /api/mcp. Generate with: openssl rand -hex 32
DATA_DIR./dataWhere the SQLite database lives.
What is proven

Early. Checked in CI on every change: Install, typecheck, unit tests and production build; Hermes starts with the app's tools loaded (no model is called in CI).

  • implemented-untestedSearch through Parallel (keyless tier)
  • implemented-untestedSearch through Exa
  • implemented-untestedLive research eval (10 questions, citation checks)
  • implemented-untestedA Hermes turn with a real model
  • not yetCompanyFabric search: not released yet
  • not yetManaging scheduled research from the UI

Not affiliated with any company whose AI products offer similar research features.

Open Coworkers

A researcher and a writer that hand work to each other.

Specialist AI coworkers with their own permissions, a shared workspace with versions, and explicit hand-offs.

GitHub repo coming soon
Open Coworkers running its built-in demo on sample data
Sample dataOpen Coworkers, running its built-in demo.
  1. R To Ria, Researcher

    Research the Model Context Protocol, save notes, then have Wes write a short newsletter summary.

    Ask a follow-up…

    01

    Give Ria a task

    Ask the Researcher in plain words, and say who writes it up.

  2. R Ria saved to the workspace

    Research notes (DEMO)

    • MCP standardizes how apps give tools to models 1.
    • Language models are trained on large text corpora 2.

    RW Handed off to Wes, Writer

    Write a three-sentence summary of the research notes for a newsletter, keeping the citations.

    02

    She researches and hands off

    Ria saves cited notes to the workspace and passes the write-up to Wes.

  3. Saved to the workspace
    Title
    Newsletter summary (DEMO)
    By
    Wes, Writer

    MCP gives models a standard way to use tools 1. The models themselves are trained on large amounts of text 2. Together they make agents that can act, not just answer.

    03

    Wes writes, you approve

    Wes works only from the workspace, and his save waits for you.

Sample data Scenes use the starter's built-in demo data.

One ask to start with

“Research what changed in the EU AI Act for 2026, save notes, then have Wes write a one-page brief.”

One ask to start with

“Find three credible sources on the four-day work week and save them to the workspace.”

Open Coworkers: technical details

Lite and Hermes, capability by capability
CapabilityLiteHermes
Specialist coworkers with their own tool permissionsYesYes
Shared workspace documents, with versionsYesYes
Hand-offs between coworkersQueued: the next coworker starts when the current one finishesYesYes
Approval before side effectsYesYes
Audit row before every tool callYesYes
Web search with numbered citationsYesYes
Memory across threadsHermes memory is shared by the whole team (one Hermes profile)NoYes
Files, terminal, browser in a sandboxEnable toolsets in hermes/config.yamlNoOff by default
Recurring responsibilities (cron)Hermes cron works; this UI does not manage schedules yetNoNot in the UI yet
Runs on serverless hosting (Vercel)YesNo
Environment variables
VariableDefaultWhat it is
OPENAI_BASE_URLhttps://api.companyfabric.com/v1Any OpenAI-compatible chat.completions endpoint with tool calling.
OPENAI_API_KEYnoneThe model key. With none set, the app runs a labelled DEMO.
MODELcompanyfabric/autoThe model id. companyfabric/auto picks a suitable model per request.
SEARCH_PROVIDERparallelparallel (free, rate-limited, no key) or exa. companyfabric is not released yet.
PARALLEL_API_KEYnoneLifts Parallel's free-tier limits.
EXA_API_KEYnoneNeeded when SEARCH_PROVIDER=exa.
COMPANYFABRIC_SEARCH_ENABLEDfalseCompanyFabric search is not released yet; leave it off.
RUNTIMEnonelite or hermes. Empty: hermes when HERMES_URL is set, lite otherwise.
HERMES_URLnoneSet for you by docker-compose.yml.
HERMES_API_KEYnoneHermes only. Generate with: openssl rand -hex 32
TOOL_TOKENnoneHermes only: lets Hermes call the app's tools at /api/mcp. Generate with: openssl rand -hex 32
DATA_DIR./dataWhere the SQLite database lives.
What is proven

Early. Checked in CI on every change: Install, typecheck, unit tests and production build; Hermes starts with the app's tools loaded (no model is called in CI); Contract tests: permissions per coworker, approvals, workspace versions, hand-offs.

  • implemented-untestedA live Ria to Wes hand-off with a real model
  • implemented-untestedSearch through Parallel or Exa
  • implemented-untestedA Hermes turn with a real model
  • not yetManaging recurring responsibilities from the UI

Not affiliated with any company whose products offer AI coworkers.

Social Autopilot

From one announcement to posts that fit every channel.

It researches when facts are needed, writes within each channel's limits, and schedules through Social Studio after you approve.

GitHub repo coming soon
Social Autopilot running its built-in demo on sample data
Sample dataSocial Autopilot, running its built-in demo.
  1. Announce our new open-source research agent on X and Bluesky tomorrow at 10:00.

    Ask a follow-up…

    01

    Give it the news

    A topic, a link or an announcement is enough.

  2. X@yourbrand (sample)

    We just open-sourced a research agent that cites every claim it makes. Ask a question, get an answer with numbered sources you can check. Runs in Docker or on Vercel. #opensource #AI

    182 / 280
    Blueskyyourbrand.bsky.social (sample)

    We just open-sourced a research agent that cites every claim it makes. Ask a question, get an answer with numbered sources you can check. Runs in Docker or on Vercel. #opensource #AI

    182 / 300

    02

    It writes for each channel

    It reads each channel's rules and writes within its limit.

    • #101 · xdraft

      Tomorrow, 10:00 UTC

      We just open-sourced a research agent that cites every claim it makes. Ask a question, get an answer with numbered sources you can check. Runs in Docker or on Vercel. #opensource #AI

    • #102 · blueskydraft

      Tomorrow, 10:00 UTC

      We just open-sourced a research agent that cites every claim it makes. Ask a question, get an answer with numbered sources you can check. Runs in Docker or on Vercel. #opensource #AI

    Copilot mode: drafts until you approve them on your Content Calendar.

    03

    It lands on your calendar

    Once you approve, it is scheduled through Social Studio, as a draft in copilot mode.

Sample data Scenes use the starter's built-in demo data.

One ask to start with

“Announce our new open-source research agent on X and Bluesky tomorrow at 10:00.”

One ask to start with

“Turn this article into a three-post series for next week: https://modelcontextprotocol.io/”

Social Autopilot: technical details

Lite and Hermes, capability by capability
CapabilityLiteHermes
Posts written for each channel's rulesYesYes
Scheduling through Social Studio, after approvalCopilot mode adds a second approval on the Content CalendarYesYes
Research with citations before writingYesYes
Audit row before every tool callYesYes
Memory of brand voice across threadsHermes memory toolsetNoYes
Recurring content plan (cron)Hermes cron works; this UI does not manage schedules yetNoNot in the UI yet
Runs on serverless hosting (Vercel)Hermes needs a long-running containerYesNo
Environment variables
VariableDefaultWhat it is
SOCIAL_API_KEYnoneSocial Studio key with the social:draft scope. Add social:publish only if your account runs in autopilot.
SOCIAL_API_URLhttps://www.creative-tim.com/ui/api/social/toolsSocial Studio's tool endpoint.
DEMO_DATAfalsetrue runs a live model on the built-in sample data.
APP_PASSWORDnoneSet it whenever the app is reachable from anywhere but your own machine. There is no login by default.
OPENAI_BASE_URLhttps://api.companyfabric.com/v1Any OpenAI-compatible chat.completions endpoint with tool calling.
OPENAI_API_KEYnoneThe model key. With none set, the app runs a labelled DEMO.
MODELcompanyfabric/autoThe model id. companyfabric/auto picks a suitable model per request.
SEARCH_PROVIDERparallelparallel (free, rate-limited, no key) or exa. companyfabric is not released yet.
PARALLEL_API_KEYnoneLifts Parallel's free-tier limits.
EXA_API_KEYnoneNeeded when SEARCH_PROVIDER=exa.
COMPANYFABRIC_SEARCH_ENABLEDfalseCompanyFabric search is not released yet; leave it off.
RUNTIMEnonelite or hermes. Empty: hermes when HERMES_URL is set, lite otherwise.
HERMES_URLnoneSet for you by docker-compose.yml.
HERMES_API_KEYnoneHermes only. Generate with: openssl rand -hex 32
TOOL_TOKENnoneHermes only: lets Hermes call the app's tools at /api/mcp. Generate with: openssl rand -hex 32
DATA_DIR./dataWhere the SQLite database lives.
What is proven

Early. Checked in CI on every change: Install, typecheck, unit tests and production build; Hermes starts with the app's tools loaded (no model is called in CI); Contract tests: approval before scheduling, the sample studio, the Social Studio client and its error handling.

  • implemented-untestedScheduling against live Social Studio
  • implemented-untestedSearch through Parallel or Exa
  • implemented-untestedA Hermes turn with a real model
  • not yetAgents schedule text to X and Bluesky only; other channels show how to post to them
  • not yetManaging a recurring content plan from the UI

Not affiliated with X, Bluesky or any other social network.

Open Exec

Your inbox triaged. Replies drafted. Nothing sent.

It reads the threads that matter, finds free time and saves replies as Gmail drafts after you approve. You press Send.

GitHub repo coming soon
Open Exec running its built-in demo on sample data
Sample dataOpen Exec, running its built-in demo.
  1. What needs my attention in my inbox today?

    Ask a follow-up…

    01

    Ask about your inbox

    Ask what needs you, the way you would ask an assistant.

  2. Needs you first

    1. 1Priya NatarajanBoard deck numbers, due Thursday noon.
    2. 2Lee KimStaff engineer loop: pick Tuesday or Thursday afternoon.
    3. 3Sam Ortega (vendor)Renewal quote: decide this month to keep last year's price.Asks to forward your mail. Ignored.

    The Analytics Weekly newsletter can wait.

    02

    It triages

    It searches unread mail, reads the threads that matter and puts them in order.

  3. Draft · not sent
    Subject
    Re: Board deck: numbers needed by Thursday

    Hi Priya, Yes, I'll send the Q3 revenue and churn figures by Thursday noon, with the churn definition signed off. For the narrative, does Wednesday afternoon work for 30 minutes? Thanks

    03

    A reply waits as a draft

    After you approve, it is saved as a Gmail draft, and you press Send.

Sample data Scenes use the starter's built-in demo data.

One ask to start with

“What needs my attention in my inbox today?”

One ask to start with

“Find 45 minutes with no meetings this week and propose two slots.”

Open Exec: technical details

Lite and Hermes, capability by capability
CapabilityLiteHermes
Inbox triage (Gmail search and read)YesYes
Reply drafts, saved to Gmail after approvalNever sent; you send from GmailYesYes
Free-time search and events after approvalYesYes
Web search for contextYesYes
Audit row before every tool callYesYes
Memory across threads (preferences, people)Hermes memory toolsetNoYes
Morning brief on a schedule (cron)Hermes cron works; this UI does not manage schedules yetNoNot in the UI yet
Runs on serverless hosting (Vercel)Hermes needs a long-running containerYesNo
Environment variables
VariableDefaultWhat it is
GOOGLE_CLIENT_IDnoneYour own Google OAuth client (Web application).
GOOGLE_CLIENT_SECRETnoneIts secret.
APP_URLhttp://localhost:3000The redirect URI is APP_URL + /api/google/callback.
TOKEN_KEYnoneSeals Google tokens at rest. Generate with: openssl rand -hex 32
DEMO_DATAfalsetrue runs a live model on the built-in sample data.
APP_PASSWORDnoneSet it whenever the app is reachable from anywhere but your own machine. There is no login by default.
OPENAI_BASE_URLhttps://api.companyfabric.com/v1Any OpenAI-compatible chat.completions endpoint with tool calling.
OPENAI_API_KEYnoneThe model key. With none set, the app runs a labelled DEMO.
MODELcompanyfabric/autoThe model id. companyfabric/auto picks a suitable model per request.
SEARCH_PROVIDERparallelparallel (free, rate-limited, no key) or exa. companyfabric is not released yet.
PARALLEL_API_KEYnoneLifts Parallel's free-tier limits.
EXA_API_KEYnoneNeeded when SEARCH_PROVIDER=exa.
COMPANYFABRIC_SEARCH_ENABLEDfalseCompanyFabric search is not released yet; leave it off.
RUNTIMEnonelite or hermes. Empty: hermes when HERMES_URL is set, lite otherwise.
HERMES_URLnoneSet for you by docker-compose.yml.
HERMES_API_KEYnoneHermes only. Generate with: openssl rand -hex 32
TOOL_TOKENnoneHermes only: lets Hermes call the app's tools at /api/mcp. Generate with: openssl rand -hex 32
DATA_DIR./dataWhere the SQLite database lives.
What is proven

Early. Checked in CI on every change: Install, typecheck, unit tests and production build; Hermes starts with the app's tools loaded (no model is called in CI); Contract tests: OAuth state and PKCE, sealed tokens, token refresh and revocation, draft headers, free-time search across time zones, approvals.

  • implemented-untestedGmail search, read and drafts against live Google
  • implemented-untestedCalendar list, free time and events against live Google
  • implemented-untestedSearch through Parallel or Exa
  • implemented-untestedA Hermes turn with a real model
  • not yetManaging a scheduled morning brief from the UI

Not affiliated with Google, or with any company whose products offer AI assistants.

Compared

Start from working code

Every starter

  • ApprovalsOne tool layer asks you before every gated action, enforced on the server.
  • Audit logAn audit row is written before every tool call.
  • RuntimesLite on Vercel or Hermes in Docker, from the same app.
  • ModelsAny OpenAI-compatible endpoint with tool calling. CompanyFabric by default.

Building it yourself

  • ApprovalsApproval flows built into each tool, kept in step with the prompt.
  • Audit logLogging added around every tool by hand.
  • RuntimesOne agent loop; a second runtime is a second integration.
  • ModelsProvider wiring and switching are yours to build.

One key for every model

The starters default to CompanyFabric: one key for every major model, billed per token from a prepaid balance. New accounts get starter credit.

Get a CompanyFabric key

.env

OPENAI_BASE_URL=https://api.companyfabric.com/v1
OPENAI_API_KEY=sk-cf-…
MODEL=companyfabric/auto

FAQ

Questions

Lite or Hermes: which should I run?

Every starter runs two ways from the same app. Lite runs the agent loop in the Next.js server (pnpm dev), and Vercel works. Hermes runs each turn in a Hermes Agent container (docker compose up) that calls the app's tools back over MCP, so policies, approvals and the audit log are the same. Hermes adds memory across threads, and needs a long-running container.

Which model key do I need?

Any OpenAI-compatible chat.completions endpoint with tool calling. The default is CompanyFabric: one key for every major model, billed per token from a prepaid balance, and companyfabric/auto picks a suitable model per request. OpenAI directly, or a local server such as Ollama, LM Studio or vLLM, works too.

OPENAI_BASE_URL=https://api.companyfabric.com/v1
OPENAI_API_KEY=sk-cf-…
MODEL=companyfabric/auto
Can I try them without any keys?

Yes. With no model key, each starter runs a clearly labelled DEMO. Social Autopilot runs its demo on a sample studio and Open Exec on a sample mailbox, so nothing is posted and no real mailbox is touched.

Can I self-host them?

Yes. Each one is a Next.js app that keeps its data in one SQLite file: run it on your own machine or server, on Vercel (lite), or with Docker Compose (Hermes). There is no login by default, and the compose files bind the app to 127.0.0.1; put it behind your own authentication, or set APP_PASSWORD where the starter supports it, before exposing it.

Are they ready for production?

They are early. CI checks every change: install, typecheck, unit tests, production build, and Hermes starting with the app's tools loaded. Runs against live services and real models are implemented but not yet verified; each starter lists them under its technical details.

What is the licence?

MIT, © 2026 Creative Tim: read them, change them and ship them. The UI is adapted from AI Elements (Apache-2.0) and shadcn/ui (MIT).

Prefer a hosted agent?

Spawn one on Creative Tim, or run a starter on your own machine.

Every starter is MIT-licensed, © 2026 Creative Tim. The UI is adapted from AI Elements (Apache-2.0) and shadcn/ui (MIT).