Creator OS docs
Run your socials from the command line
or hand it to an agent
New here? Watch the walkthrough first
The founder, @KevBuildsApps, teaches the full Creator OS + Claude Code workflow in depth on YouTube: setup, prompts, and the playbooks that actually grow accounts.
Overview
Creator OS is the operating system for social media: one account connects Instagram, TikTok, YouTube, X, Facebook, LinkedIn, and Threads, and everything you can do in the dashboard (publishing, scheduling, analytics) is also available through the Creator OS CLI. That makes the whole platform agent-ready: any AI agent can run an account end to end with one scoped API key.
These docs cover the two ways to set that up, the Kairos agent, and, workflow by workflow, the endpoint surfaces your agent works with: comment funnels, replies, moderation, DMs, multi-platform posting, scheduling, and analytics. No REST calls to learn; the workflows below are the interface.
Quickstart
First, get your API key. Create a Creator OS account, connect your socials, and grab the key from Settings → API keys (one key per workspace; agency plans get one per client). Keys look like sk_ + 64 hex characters.
From there, there are two ways to set up. Most people should run the Creator OS agent: the CLI ships inside its codebase, so there is nothing separate to install.
Run the Creator OS agent (recommended)
Install your own copy of Kairos, the Creator OS agent. The Creator OS CLI is already inside its codebase, wired up and ready, so setup is just clone and start. You need an AI brain: a logged-in Claude Code works on your Claude plan, or set ANTHROPIC_API_KEY.
$ git clone https://github.com/kevinbadi/kairos && cd kairosCopy$ npm start creatoros kairosCopyFirst run is the onboarding interview: Kairos collects your API key (masked, validated live), your brand, your links, and your automation preferences, then drops you into a chat that runs your accounts. The full walkthrough is in the Kairos section below.
Install the CLI in your own AI coder
Already live in Claude Code, Codex, Cursor, or Replit? Bring Creator OS to the agent you already use. In any terminal with Node 20+, open your agent in a working folder and run:
$ npx @creatoros/cli@latest initCopyIt asks for the key, validates it live, installs five agent skills into ./creatoros/skills/, and generates the agent surfaces: creatoros/CLAUDE.md, creatoros/START.md, slash commands, and creatoros/mcp.json. Then send your agent one message:
“Read creatoros/START.md and get acquainted with my socials.”
Either way, on that first run the agent checks your connected accounts, pulls follower stats and analytics, and reports back with everything it can do. From then on you talk to it in plain language: “schedule this week’s clips,” “post this everywhere,” “how did last week perform?”
Kairos, the Creator OS agent
Kairos (the Kai agent) is Creator OS’s own agent harness: a ready-to-run agent with the CLI built into its codebase. Instead of wiring the toolkit into your own AI coder, you run Kairos and get an agent that already knows it. It onboards you with a few setup questions, writes a brand file it re-reads before every run, and manages your accounts end to end.
Kairos ships as a fork-and-run starter repo: github.com/kevinbadi/kairos (open source, MIT). Fork or clone it, npm install(bootstraps the CLI and agent surfaces), set your Anthropic API key (the agent's brain), and start. Your Creator OS workspace key is collected during the onboarding interview, masked as you type:
$ git clone https://github.com/kevinbadi/kairos && cd kairosCopy$ npm installCopy$ export ANTHROPIC_API_KEY=...Copy$ npm start creatoros kairosCopyOnboarding: Kairos builds your brand file
On first run Kairos interviews you and saves the answers to a brand file (brand.md) that anchors everything it writes and replies to:
Your brand
What you’re marketing and what you’re selling: the products, offers, and positioning Kairos writes toward in every post and reply.
Your links
URLs for your products and services, so posts, replies, and DMs always send people to the right place.
Your profiles
The username for each connected profile, so the agent addresses the right account on every platform.
Automations
Whether you want automations set up. Say yes and Kairos preconfigures them for you during onboarding.
What Kairos can do
This is the exact Creator OS API surface Kairos ships with. Every other endpoint is gated off from the agent, so it can’t touch anything outside this list.
Posting
Every post type, to one account or many at once.
- •Short-form video: TikTok, Reels, Shorts
- •Long-form video
- •Carousels
- •Single posts: image or blog-style text
- •Threads & tweets
- •Multi-posting: one call publishes to several platforms
- •Scheduling: server-side, nothing stays running on your machine
Analytics
The same numbers the dashboard shows, readable by the agent.
- •Platform analytics: follower growth, views, and per-platform performance
- •Post analytics: per-post metrics across every connected platform
Messaging & comments
Webhook-driven: Kairos reacts as events arrive, no polling.
- •Message (DM) replies: X, Instagram, Facebook
- •Comment replies on every platform except TikTok: X, Instagram, Facebook, Threads, YouTube, LinkedIn
- •Comment-to-DM workflows: Facebook & Instagram
Comments → DM
Works on: Instagram, Facebook
The funnel workflow: someone comments a keyword on your post (“GUIDE”, “LINK”, “PRICE”) and they automatically get a DM with your link. It’s the highest-converting thing you can run on Instagram, because the platform rewards comment volume and the DM lands while the person is still looking at your content.
A comment-to-DM automation has a trigger, a match rule, and a payload:
Trigger
A keyword comment on a post or reel, scoped to one specific post or account-wide so it fires on every post. Instagram also supports story-reply triggers: someone replies to your story with the keyword and gets the DM.
Match rule
Your keyword list, matched exactly or as “contains”. Leave keywords empty and every comment triggers it.
The DM
Your message plus up to 3 link buttons. Add message variations and Creator OS rotates them at random, so a thousand DMs don’t all read identically.
Public reply (optional)
A comment reply posted in the thread alongside the DM (“sent you a DM!”) with its own rotating variations.
Link tracking
On by default: link buttons are wrapped in a tracked redirect, so stats show delivered, read, clicks, and unique clickers per automation. Clickers can be auto-tagged for segmentation.
$ creatoros automations:list --cloudCopyOr just tell your agent
“Set up the funnel on my launch post: keyword GUIDE, DM them the checkout link.”
Reply to comments
Works on: Instagram, Facebook, X, Threads, YouTube, LinkedIn (every platform except TikTok)
Every comment across every connected account flows into one inbox. List them all, pull one post’s thread, and reply, from the CLI or the Creator OS app’s Inbox tab.
$ creatoros inbox:comments --prettyCopy$ creatoros inbox:reply <postId>CopyThere’s also a private-reply move most people don’t know exists: answer a comment in the commenter’s DMs. Right for “what’s the price?” questions you’d rather not negotiate in public.
$ creatoros inbox:private-reply <postId> <commentId>CopyFor hands-off replies, AI auto-replies run server-side: configure the voice prompt and your links in the Creator OS app and incoming comments get answered around the clock, no CLI or machine involved. Kairos does the same thing webhook-driven, with judgment: it drafts on-brand replies and escalates sensitive threads to you.
Or just tell your agent
“Go through today’s unanswered comments and reply in my voice. Skip anything about refunds, flag those for me.”
Like comments
Works on: Facebook, X
The lightest-touch engagement there is: liking a comment tells the commenter they were seen without you writing anything, and comment engagement feeds the platforms’ ranking of your post. A like-sweep after posting (every positive comment in the first hour) is a cheap, real boost.
$ creatoros inbox:like-comment <postId> <commentId>Copy$ creatoros inbox:unlike-comment <postId> <commentId>CopyPlatform note: Instagram removed comment-liking from its API back in 2018, and Threads, YouTube, and LinkedIn don’t offer it either. That’s why this one is Facebook and X only; on the other platforms, a short reply is the equivalent gesture.
Or just tell your agent
“Like every positive comment on my last three posts.”
Hide comments
Works on: Instagram, Facebook, X, Threads
Moderation without the drama. A hidden comment disappears for everyone except the commenter: they still see it as posted, so there’s nothing to re-post and no “why did you delete my comment?” escalation. Spam, link-droppers, and bait go invisible without feeding them.
$ creatoros inbox:hide-comment <postId> <commentId>Copy$ creatoros inbox:unhide-comment <postId> <commentId>CopyHiding is fully reversible. Deleting is not: inbox:delete-comment removes the comment permanently, and the commenter can tell. Default to hide; keep delete for the genuinely bad stuff.
Or just tell your agent
“Hide every comment on my launch post that’s just a link or crypto spam.”
Reply to messages
Works on: Instagram, Facebook, X
DMs are where comment funnels convert and warm leads go quiet if you’re slow. Every conversation across your connected accounts is listed in one place; read a thread, reply, mark it read:
$ creatoros inbox:conversations --prettyCopy$ creatoros inbox:messages <conversationId>Copy$ creatoros inbox:send <conversationId>CopyOn Instagram and Facebook, DMs support link buttons and quick replies, and delivery and read receipts flow back into your stats. Like comments, message auto-replies run server-side from the Creator OS app: set the voice and links once and the inbox answers itself, with Kairos escalating anything sensitive instead of winging it.
Or just tell your agent
“Anyone who DMed the word GUIDE this week and never got the link: send it with a one-line follow-up.”
Hide messages
Works on: Instagram, Facebook
Inbox zero for DMs: archiving a conversation hides it from the active inbox without deleting anything. The history stays intact and the thread comes back (or can be unarchived) if the person writes again. It’s how you keep the inbox to the conversations that still need a human.
$ creatoros inbox:update-conversation <conversationId>Copy$ creatoros inbox:mark-read <conversationId>CopyOr just tell your agent
“Archive every conversation that’s been resolved for over a week.”
Post to all platforms
Works on: Instagram, TikTok, YouTube, X, Facebook, LinkedIn, Threads
One flow for everything: upload media once, validate, then a single posts:create targeting every account that should get it. One call, seven platforms.
$ creatoros media:upload path/to/clip.mp4Copy$ creatoros posts:create --text "<caption>" --accounts <id1>,<id2>,<id3> --media <url>CopyWhat you can publish where
Text
Plain text posts and threads
X, Threads, LinkedIn, Facebook
Image
Single photo with a caption
Instagram, X, Threads, LinkedIn, Facebook
Carousel
Multi-image swipe posts
Instagram, TikTok, LinkedIn, X, Facebook
Short video
Vertical shortform: Reels, TikToks, Shorts
All seven platforms
Long video
Standard long-form video
YouTube, Facebook, LinkedIn, TikTok, X
Before big sends, validate: validate:post-length checks your caption against every platform’s character limit (Threads caps at 500, X at 280 free, the #1 cross-posting failure), and validate:media checks formats, sizes, and aspect ratios. Creator OS handles the per-platform payload differences for you, including TikTok’s required consent flags.
If one platform fails inside a multi-platform post, the others still publish. Check posts:get <postId> for the platform error, fix it, then posts:retry <postId>. No re-uploading, no re-posting the ones that worked.
Or just tell your agent
“Post this clip everywhere: content-library/day1.mp4. Write per-platform captions.”
Schedule everywhere
Works on: Instagram, TikTok, YouTube, X, Facebook, LinkedIn, Threads
Scheduling is the same posts:create call plus a time. Everything publishes from Creator OS servers at the scheduled moment; nothing keeps running on your machine. Schedule a month and close the laptop.
$ creatoros posts:create --text "<caption>" --accounts <id1>,<id2> --media <url> --scheduledAt "2026-08-15T18:00:00" --timezone "America/New_York"CopyWhole-calendar work goes through posts:bulk-upload with a JSON file: one call schedules the entire calendar. Always --dryRun first; it validates every row (asset exists, caption fits, date is in the future) without posting anything.
$ creatoros posts:bulk-upload --file calendar.json --dryRunCopyThe queue is inspectable and editable until the moment a post goes out: posts:list shows everything scheduled, posts:update edits a scheduled post, posts:delete pulls it. Ask analytics:best-time for the posting windows your accounts actually perform in, and schedule into those.
Or just tell your agent
“Schedule next week from content-library/, one post per day at my best posting times.”
Post analytics
Works on: All connected platforms
Per-post performance across every platform in one place: impressions, reach, likes, comments, shares, saves, clicks, and views, per post, comparable across platforms. The same numbers the app’s Analytics tab shows are readable by your agent:
$ creatoros analytics:posts --prettyCopy$ creatoros analytics:daily --prettyCopy$ creatoros analytics:best-time --prettyCopyThe point isn’t reporting, it’s judgment. An agent that reads last week’s numbers before scheduling next week doubles down on what worked: which hook, which format, which platform, which time slot. Ask “what performed best last month?” and the agent maps it to these commands.
Or just tell your agent
“How did last week do? Rank my posts by views and tell me what the top three have in common.”
Follower analytics
Works on: All connected platforms
Follower counts across every connected account in one call. The growth number that actually matters, tracked over time rather than eyeballed:
$ creatoros accounts:follower-stats --prettyCopyInstagram goes deeper: a daily follower-history series with per-day gained and lost (Creator OS snapshots this daily; Instagram itself no longer exposes a historical series), plus audience demographics by age, city, country, and gender once the account has 100+ followers.
$ creatoros analytics:get-instagram-follower-historyCopy$ creatoros analytics:get-instagram-demographicsCopyGained-vs-lost is the diagnostic pair: growth with high churn is a content problem, flat growth with no churn is a reach problem. The Creator OS dashboard draws this as the follower heatmap; your agent can read the same series and tell you which posts the spikes line up with.
Or just tell your agent
“Pull my follower history for the last 90 days and tell me which posts the growth spikes line up with.”
Launch the Kairos dashboard
The Kairos repo ships with a local web dashboard for watching what your agent is actually doing, and verifying it’s working. From the kairos folder:
$ npm run dashboardCopyIt opens at http://localhost:4180 (override with KAIROS_DASHBOARD_PORT). After npm link you can also launch it from anywhere with kai dashboard. Zero external services: it reads the repo’s files, the agent’s structured activity log, and the Creator OS API with your already-configured credentials. Missing credentials never crash it; you get a friendly connect state instead.
Overview
Health strip, reply/DM/post counters, a GitHub-style year heatmap of agent activity, and a live feed
Agent
Full transparency into the agent’s understanding: persona, objective, KPIs, comment/DM rules, and the literal system prompt it runs on
Automations
Every workflow drawn as trigger → action → outcome node chains, each with an operating/armed/failing health badge and live executions
Brand
Your brand file rendered, editable in place
Training
Every workflow playbook with last-used-by-the-agent info, editable in place
Logs
The full filterable activity feed with raw JSON and real error payloads
Chat
The same Kai as the terminal, streaming in the browser
Every panel is fed by plain local JSON endpoints (/api/health, /api/activity, /api/automations, /api/chat…), and a panel is just one ES-module file in dashboard/public/panels/ with no build step, so you can add your own views against the same data.
CLI reference
Everything below runs as creatoros … (from the Kairos codebase, or via npx @creatoros/cli after init). Add --pretty to any read command for human-friendly output; agents usually consume the default JSON.
Setup, accounts & publishing
creatoros initOnboard: paste your API key, install the agent skills, generate agent surfaces (CLAUDE.md, START.md, slash commands, mcp.json)
creatoros syncRefresh skills + agent surfaces to the latest we’ve shipped. Your edited files are never clobbered; updates land alongside as .new files
creatoros auth:checkVerify the saved API key is valid (exits 0 when good; skills run this first)
creatoros accounts:list --prettyList this workspace’s connected social accounts and their account IDs
creatoros media:upload <file>Upload an image or video once; returns a URL reusable across every platform
creatoros posts:createPublish or schedule a post to one or many accounts (--accounts takes comma-separated account IDs)
creatoros posts:list --prettyThe queue: scheduled + published posts
creatoros posts:get <postId> --prettyOne post’s status, targets, and timing
creatoros posts:update / posts:deleteEdit or remove a scheduled post before it goes out
creatoros posts:retry <postId>Re-attempt a post that failed on a platform
creatoros posts:bulk-upload --file calendar.json [--dryRun]Schedule a whole calendar in one call; dry-run it first
creatoros validate:post-length --text "..." --prettyCheck a caption against every platform’s character limit before posting
creatoros validate:media --prettyCheck media against platform rules (formats, sizes, aspect)
creatoros accounts:tiktok-creator-info <accountId> --prettyTikTok creator constraints (allowed privacy levels, limits); check before TikTok posts
Inbox: comments & messages
creatoros inbox:comments --prettyList comments across every connected account
creatoros inbox:post-comments <postId>Comments on one specific post
creatoros inbox:reply <postId>Reply to a comment on a post
creatoros inbox:private-reply <postId> <commentId>Answer a commenter in their DMs instead of the thread
creatoros inbox:like-comment / inbox:unlike-comment <postId> <commentId>Like (or unlike) a comment
creatoros inbox:hide-comment / inbox:unhide-comment <postId> <commentId>Hide (or unhide) a comment: reversible, and invisible to the commenter
creatoros inbox:delete-comment <postId>Delete a comment permanently
creatoros inbox:conversations --prettyList DM conversations across accounts
creatoros inbox:messages <conversationId>Read the messages in one conversation
creatoros inbox:send <conversationId>Send a DM in a conversation
creatoros inbox:mark-read <conversationId>Mark a conversation as read
creatoros inbox:update-conversation <conversationId>Archive / unarchive a conversation
creatoros automations:list --cloudList your comment-to-DM automations with their stats
Analytics
creatoros analytics:posts --prettyPer-post performance across every connected platform
creatoros analytics:daily --prettyDaily account metrics over time
creatoros analytics:best-time --prettyBest posting windows learned from your accounts
creatoros accounts:follower-stats --prettyFollower counts across all connected accounts
creatoros analytics:get-instagram-follower-historyInstagram daily follower series: gained and lost per day
creatoros analytics:get-instagram-demographicsInstagram audience by age, city, country, or gender (needs 100+ followers)
Scheduled agent runs
creatoros automations:create <name> --schedule "<cron>" --skill <skill>Schedule a recurring agent run, locally (launchd/cron) or --target railway for always-on cloud
creatoros automations:list / automations:remove <name>Review or remove scheduled agent runs
Anything not listed passes straight through to the underlying engine. Run creatoros --help for the full surface.
Ready to hand over the keys?
Create an account, connect your socials, and your agent can be posting in the next ten minutes.