index · all work
01 · AI agents

Noelle

An AI team, org-charted like a real company. The agents do the legwork; nothing ships without your approval.

Year2026
Statuslive
RoleSolo · design + engineering
Built withTypeScript · Next.js 16 · React 19 · Astro · Hono · +11
trynoelle.comopen ↗
Noelle preview

Preview. Click it to open the live app.

01Overview

Noelle is a dashboard where a small team hires AI agents arranged as a company org chart. A CEO sits at the top, leads under it, specialists under them. The specialists actually work. Vega watches X, finds people worth replying to, and writes drafts. Lyra does the same for LinkedIn connections. Orion watches subreddits. Nova tears down Instagram and TikTok videos and scripts new ones. None of them post. Each one queues a draft and waits for a human to approve it.

Under the hood it is a real backend, not a prompt wrapper. Workers run in stages (discover, profile, classify, draft, send) on a personal VM and write to Postgres. Drafts are grounded in a retrieval layer built from the operator's own writing so they sound like a person, and a verifier pass strips the tells that make text read as AI. A self-host CLI stands the whole system up on your own machine against a local database.

02The problem

Growing an audience by replying to the right people works, but it eats hours. The lazy fix is to point an LLM at your mentions, and it produces obvious slop that gets ignored or gets the account flagged. Noelle keeps a human on the approve button while agents handle discovery, research, and the first draft, and it spends most of its effort making those drafts not read like a bot.

03Highlights
  • Four draft-only agents: Vega on X, Lyra on LinkedIn, Orion on Reddit, Nova on Instagram and TikTok. Vega, Lyra, and Orion run the same stages: discover, profile, classify, and draft a reply. Nova runs a different pipeline, it studies the creators you pick, breaks down why their videos work, and drafts short-form ideas and scripts, not replies. All four queue a draft and wait for a human to approve it. Only the X agent has a send path, and it's gated; the rest never post.
  • A multi-stage worker pool (discovery, classifier, drafter, profiler, ideation, send) runs as systemd template instances on a single VM and claims work from Postgres with SKIP LOCKED, so the pool can scale out or move to a managed runtime without changing the work-claim contract.
  • Grounded drafting: a hybrid retrieval layer (BM25 plus dense voyage-context-4 vectors) pulls voice anchors from the operator's own writing, a vision model captions attached images, and a post-draft verifier judges the result and hard-zeros AI tells like em dashes and forced enthusiasm.
  • One model router fronts six LLM backends. Codex (gpt-5 via ChatGPT OAuth) is primary; Bedrock Claude, Vertex (Claude and Gemini), direct Anthropic, a Gemini-key backend, and a local claude-cli path that bills a Claude subscription instead of per-token are the fallbacks. Every call is spend-capped by a budget bucket.
  • Split-cloud design: Supabase issues the auth JWT, all product data lives in Cloud SQL Postgres 16 across 88 versioned SQL migrations, and since there is no row-level security, every server path calls assertOrgMember to enforce tenancy in application code.
  • Reads run through Apify scraper actors with no login cookies, so discovery can't get the operator's account locked. The X write path is isolated behind rate-limited posting cookies and its own account-safety playbook.
04By the numbers
2,125
commits since May 2026
6
agent types, 4 draft-only agents
88
versioned SQL migrations
6
LLM backends behind one router
What's inside9 parts
  • @noelle/appapp

    The Next.js dashboard at app.trynoelle.com where you hire agents as an org chart, watch each intern work, and approve every draft before it ships.

  • @noelle/agentslibrary

    The agent type registry: YAML manifests plus TS classes that define the CEO, the marketing lead, and the four growth interns, and wire each into the reports-to hierarchy.

  • @noelle/x-internworker

    Vega, the X Growth Intern: a worker pool (discovery, classifier, drafter, send) that finds leads, grades them, and queues on-brand X reply drafts for your approval.

  • @noelle/linkedin-internworker

    Lyra, the draft-only LinkedIn intern that watches your connections' posts, profiles each author, and drafts replies and DMs you send by hand.

  • @noelle/reddit-internworker

    Orion, the draft-only Reddit intern that watches a list of subreddits and drafts on-brand replies to in-ICP threads for your approval.

  • @noelle/video-internworker

    Nova, the draft-only intern that studies the IG and TikTok creators you pick, breaks down why their videos work, and drafts short-form ideas and scripts.

  • @noelle/linkedin-actuatorextension

    Lyra's hands: a Chrome MV3 extension that carries out approved LinkedIn likes, comments, and DMs through the browser session you already own.

  • @noelle/clicli

    The noelle command that stands up a fully self-hosted Noelle on your own VM, with local Postgres, a single-operator identity, and the dashboard, API, and workers.

  • @noelle/api-vmservice

    The Hono backend at api.trynoelle.com behind a Cloudflare tunnel that takes shape-validated writes from the interns' drafters into the noelle schema.

·Tags
AI agentsmulti-agentRAGhuman-in-the-loopsocial automationmonorepo
Full tech stack 16
TypeScriptNext.js 16React 19AstroHonoNode 22Cloud SQL Postgres 16Supabase AuthTurborepopnpmZodTailwind CSS v4ApifyCodex / Vertex / BedrockGCPVercel