Skip to content
acoBOYZPublic

About

🖥️ Manage your server infra from one web page. Realtime.

Topics

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

134 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

monrep

Manage your server infra from one web page. Realtime.

You install a small CLI on the box (mostly Linux). That agent stays connected to the web app. From the browser you can do the stuff you’d normally SSH for: Docker containers, restarts, shell, logs, monitors. Later we plug in OpenTelemetry and more.

One control plane. Many servers. No jumping between terminals every time something breaks.

The idea

Piece What it does
Web app Dashboard. Live view. Trigger updates, restarts, open a shell, watch logs.
CLI agent Runs on the server as a single binary. Talks to the web app over a realtime channel. Executes what you ask.
CI (GitHub for now) Builds images / binaries. When source changes you can push updates the same way CF / Vercel / Netlify feel, but for your fleet.

You are not SSH’d into five machines at once. You open the page, pick a server, do the job.

What you can do (goals)

  • Create / start / stop / restart Docker containers
  • Run shell commands and see output live
  • Watch service logs in realtime; keep error history when you need it
  • Resource monitors (CPU, mem, etc.)
  • Disable one service or everything from the outside world when you need a kill switch
  • Later: OpenTelemetry inputs, richer metrics, alerts

Exact UI and CLI packaging are still moving. See ROADMAP.md.

Why this repo looks like a monorepo

Because the control plane is not a random Node script. We want:

  • TanStack Start on Cloudflare (app + API + realtime in one deploy)
  • Durable Streams + TanStack DB for live state (containers, jobs, log tails)
  • A publishable CLI you install on the server, always connected back to that app

The packages under packages/ are the building blocks for that path (web shell, db/stream codegen, UI, etc.). Product surface grows as the roadmap items land.

New Worker app from a seed: bun run create:app <name> (see packages/.templates/README.md).

Status

Early. Public so people can follow along and contribute. Expect breakage; expect the roadmap to move.

If you just cloned this: start from ROADMAP.md for “what exists vs what’s next,” then poke packages/main for the web app side.

Realtime / DO streams (how createDoModule, StreamDB, and the client hooks work with examples and performance notes): packages/db/README.md.

Local (dev)

HTTPS on Vite matters for StreamDB: browsers cap ~6 concurrent HTTP/1.1 sockets per host; TLS brings HTTP/2 multiplexing so many live stream requests don’t queue.

Brand / domains are per deploy: copy [brand.json.example](./brand.json.example) → brand.json (gitignored) and edit, or let setup:dev / bun run sync:brand create it from the example. Generated *.gen.* and scripts/install-agent.sh are also local.

bun install
bun run setup:dev   # openssl certs + sync:brand
bun run codegen     # when you touch DO / stream schemas
bun run up          # upgrade bun, update deps, sync:brand, sync upstreams (optional)
bun run ok          # typecheck, lint, react-doctor
bun run dev         # https://localhost:5274 (falls back to http if certs missing)

Why we need Bun + openssl. certs are only for the Vite app becasue streamdb opens connections over 6 concurrent HTTP/1.1 sockets per host and http blocks after that.

CLI agent

Prod install:

curl -fsSL https://monrep.dev/install | bash
sudo monrep init --url https://<your-app> --token <one-time>

Local bind to Vite main (https://localhost:5274): see [packages/agent/README.md](./packages/agent/README.md) Local (main + agent). bun run --cwd packages/agent local.

bun run dev # or bun run --cwd packages/main dev 
bun run --cwd packages/agent local -- --token <token>
# later:
bun run --cwd packages/agent local

Install URL and release asset names come from your local brand.json (see brand.json.example). After edits: bun run sync:brand. Details: [packages/agent/README.md](./packages/agent/README.md). Progress: [ROADMAP.md](./ROADMAP.md).

Contributing

Issues and PRs welcome. Keep changes lean.

Full rules (quality gates, import/polish house style, and installing /monrep + Intent skills for AI agents): CONTRIBUTING.md.

Short version: don’t edit generated files under packages/db. Change the source and run bun run codegen. Agent hard rules live in [AGENTS.md](./AGENTS.md); if you code with Cursor, run bun run skills:install and keep the monrep skill in sync.

Questions or ideas → open an issue, or say hi in a PR.

License

MIT. See package.json.

About

🖥️ Manage your server infra from one web page. Realtime.

Topics

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages