◆ APOSTLE
gateway grokrouter cheap00:00:00SIGN IN

SOMEONE ASKED "FILE MY TAXES" — NOT BUILT YET — LOGGED ✕ SOMEONE ASKED "BOOK ME A FLIGHT" — NOT BUILT YET — LOGGED ✕ SOMEONE ASKED "RUN THIS PYTHON" — NOT BUILT YET — LOGGED ✕   SOMEONE ASKED "FILE MY TAXES" — NOT BUILT YET — LOGGED ✕ SOMEONE ASKED "BOOK ME A FLIGHT" — NOT BUILT YET — LOGGED ✕ SOMEONE ASKED "RUN THIS PYTHON" — NOT BUILT YET — LOGGED ✕

~/APOSTLE — README.MDNODE 22 · 2 COMMITS · OPEN SOURCE

[ W O R K S P A C E 1 ] — T H E C H A T L I V E S A T /

APOSTLE

Open-source harness to install your own AI assistant.

Tired of renting three AI tabs? Install it, point at Ollama (or paste a model key), and you have a product people can talk to. Themes change the look. Plugins change what it can do. Missing records what you have not built yet — harness and desk, not another ChatGPT UI or Claude Code CLI.

$ npm install
$ npm run dev
# seeds test@apostle.local · disable: APOSTLE_SEED_LOCAL=0
GITHUB ↗

/ is the chat /admin is the desktwo URLs, one product.

it writes down what it can't do yet. and counts. ↘

/ — CHAT — THREAD 0041● LIVE
what time is it in lagos?

── ROUTER → CHEAP

clock() → 14:32 WAT

NOT THOSE LANES — CATEGORYUI · CLI · HARNESS

ChatGPT-alt UIs

Open WebUI · LibreChat · omn1

They won “one chat / kill the tabs.” We are not another UI.

Claude Code alts

OpenCode · terminal agents

Coding CLIs. We do not claim that parity.

Apostle

Harness + desk

Install your assistant product. Themes, plugins, Missing.

/admin

the desk.

Voice, plugins, which model runs, spend, and the list of asks you cannot fulfill yet.

MISSING — ASKS YOU HAVE NOT BUILTSORTED BY COUNT
  • ×13

    “book me a flight”

    OPEN

  • ×9

    “run this python”

    OPEN

  • ×7

    “read my calendar”

    OPEN

  • ×4

    “remember my name”

    OPEN

  • ×3

    “look at this screenshot”

    OPEN

this list is your roadmap. they told you.

MODEL MAPONE GATEWAY OBJECT
cheap→grok-mini
default→grok
strong→grok-heavy
vision→grok-vision

OpenAI-compatible. Grok today; OpenRouter, Ollama, anything with the same shape tomorrow.

PLUGINSDEFAULT: DENY
  • [on] clock

    network: none · secrets: none · approvals: none

  • [on] fetch

    network: public https · secrets: none · approvals: none

  • [on] weather

    network: open-meteo · no API key

  • [--] computer (next)

    network: deny · jailed shell + files

LAW.MDSIX RULES · CORE REFUSES THE REST

THE LAW

Core stays small. A theme never owns the harness. A plugin declares what it needs.

ILAW 1:1

Core chats with no plugins.

zero plugins. still talks. ←

IILAW 2:1

Themes do not register tools.

a theme is clothes, not hands.

IIILAW 3:1

Plugins declare network, secrets, and approvals.

DEFAULT IS DENY.

IVLAW 4:1

One gateway object. The harness does not import five vendor SDKs.

ONE. count them. one.

VLAW 5:1

User content — threads, plugins, themes — survives a core update.

VILAW 6:1

“Full access to the host” is never a default.

[redacted by core]
TERM — WHAT SHIPS NOWZSH

$ apostle --shipped

[ ok ] threads, streaming-style replies, per-user history

[ ok ] sign-in — threads and desk settings belong to the operator

[ ok ] launch plugins: clock, calc, hash, uuid, base64, json, regex, fetch, unfurl, weather, missing, computer, browser

[ ok ] model map + token log

[ ok ] optional free-plan message cap (40) — desk control, not a billing product

[ ok ] MISSING. asks the tools can't do get logged with a count

6 shipped · 0 vendor SDKs · 1 gateway

TERM — WHERE THE CODE ISTREE

$ tree -L 3 --what

src/routes/index.tsxchat
src/routes/admin.tsxdesk
src/lib/apostle/server.tsgateway, plugins, router, missing-ask log
migrations/add the next number. do not edit an applied file.
ROADMAP.MDNOW → NEXT → LATER

What it's naked without

N O W

Private themes without forking core. Phosphor public; Super Intelligence stays private.

Honest Hero chrome — tool cards, run layout, drawer shells — without pretending the backends ship.

Launch ready for OSS attention — README, one-command seed, demo path, license, screenshots, what works / what doesn't, Computer/Browser security posture. SI stays private.

N E X T

  1. 1. Users. Not the operator. Invite link, quota, their own threads.
  2. 2. Thread management. Rename, delete, sort/reorder the sidebar.
  3. 3. Search through threads. Find past conversations without scrolling.
  4. 4. Computer. Browser VFS + constrained shell spike shipping (partial — not done). Default deny on the network.

    ↳ not host FS · not Firecracker

  5. 5. Better VM. Clearer sandbox + richer runtime beyond current builtins. Firecracker stays enterprise Spike.
  6. 6. Knowledge / Memory / Browser / Approvals / Jev. Corpus, facts, allowlisted browse trail (partial), HITL, decision router. Browser is not “done.”

L A T E R

Automations. Scheduled / triggered runs without a live chat turn.

A theme catalog. A catalog of plugins. Background runs that finish after the tab closes. Channels besides the web. MCP as the plugin port.

Billing / Stripe / plans — out for OSS. Not a near-term build.

N O T U N T I L T H E A B O V E I S D U L L

desktop controlwhatsapp

a workflow canvasa new model

boring is the feature.

TERM — RUN ITNODE 22

$ git clone https://github.com/justuseapen/apostle

$ npm install

$ npm run dev

→ http://localhost:8080 · PGLite seeds Ollama + test@apostle.local / password123

# re-seed: npm run seed · disable: APOSTLE_SEED_LOCAL=0

# optional cloud key: XAI_API_KEY=… npm run dev

# no DATABASE_URL? embedded postgres resets when the process stops.

A solo developer should be able to point this at their own audience and not maintain an agent framework.

FORK IT ↗
DESIGN.LANG — THE LOOK IS A THEMETHEME: PHOSPHOR

C O L O R

void

tile

border

dim

bone

focus

missing

tool

T Y P E

DISPLAYVT323 · shouts
Body / UIJetBrains Mono · works
marginaliaInstrument Serif · mutters

R U L E S

  1. 01 everything is a tile. 2px borders, 10px gaps, zero radius.
  2. 02 one focused tile per view wears the focus color.
  3. 03 color means state: focus, missing, tool. never decoration.
  4. 04 display type only for names and laws.
  5. 05 the margins talk back. sparingly.
  6. 06 no gradients, no shadows, no glass.