ATS
Applicant tracking with careers-site and candidate workflow depth on the shared base. Public source lives in `extensions/ats` and installs from `ghcr.io/movebigrocks/mbr-ext-ats`.
The SaaS-replacement platform
Shared system for teams and agents. Official CLI + GraphQL surface.
SaaS-replacement extensions
Move Big Rocks extensions replace entire standalone SaaS products — ATS, error tracking, analytics, CRM, feature requests — on the same shared base. Every extension you install is one fewer vendor with access to your data, your credentials, and your employees' identities. The first-party set is currently free. Teams can also build their own extensions with Claude Code, Codex, or any AI coding assistant, using the same SDK and runtime model as the first-party extensions.
Table of contents
Jump directly to the part you need.
First-party catalog
The current public positioning is straightforward: publish the standard-risk first-party extension set as signed OCI bundles from the first-party extensions repo, make the install refs obvious, and keep the runtime policy explicit in each manifest.
Applicant tracking with careers-site and candidate workflow depth on the shared base. Public source lives in `extensions/ats` and installs from `ghcr.io/movebigrocks/mbr-ext-ats`.
Public idea collection and voting on the same base. Public source lives in `extensions/community-feature-requests`.
Privacy-first analytics as a first-party service-backed extension with public ingest, admin dashboards, and extension-owned analytics state. Public source lives in `extensions/web-analytics`.
Sentry-compatible ingest and issue workflows on the same operational base. Public source lives in `extensions/error-tracking`.
Lightweight opportunity management with extension-owned state, seeded intake, and an admin board. Public source lives in `extensions/sales-pipeline`.
First-party privileged identity extension with instance-scoped install, OIDC configuration, and owned provider state in the shared first-party extensions repo.
Why extend here
A good extension base is not just a plugin slot. It is a system that already solved identity, routing, work records, knowledge, CLI access, API access, and audit. That is why extensions here can stay focused on domain depth instead of rebuilding those foundations.
Proof bundle
Extensions inherit workspace and team boundaries instead of inventing a separate auth and RBAC stack.
Extensions can request or attach to forms, queues, conversations, cases, and contacts instead of re-creating ticketing, inbox, or CRM fragments.
Extensions can seed and use the same Markdown-first knowledge and concept surfaces that humans and agents already use.
The CLI, GraphQL API, and admin shell already exist, so extensions can be inspected and operated through the same public and admin-facing surfaces.
Install, validate, activate, monitor, and deactivate remain explicit human-visible lifecycle steps.
What an extension is
Extensions exist so Move Big Rocks can stay explicit about what belongs in core versus what belongs in a focused product slice. They are not supposed to reintroduce app sprawl under a different name.
An extension adds domain-specific depth such as recruiting, analytics review, or another operational slice.
It can own focused structured state and routes without owning the whole trust model.
It still relies on the shared workspaces, teams, work records, knowledge, permissions, and audit surfaces.
Packaging, deployment, validation, activation, and rollback stay explicit.
What bounded means
The extension model is useful because it draws a firm line between focused product depth and shared operational boundaries.
An extension should not become a completely separate operational system with hidden context and separate governance.
The access model remains connected to the same workspace and team boundaries people already manage.
Important actions and lifecycle changes remain visible in one place.
Agents and humans can evaluate the extension through the same public docs, CLI, and owned-runtime lifecycle.
Runtime architecture
The extension model is concrete, not hand-wavy. Bundle extensions are for bundle-first product extensions that own product vocabulary, assets, and workflows while still running on shared primitives. Service-backed extensions add handlers, jobs, event consumers, and extension-owned data while still going through core-controlled routing and lifecycle controls.
Proof bundle
Use `bundle` runtime for bundle-first product extensions such as ATS, where the extension owns workflow vocabulary and presentation but still runs on shared primitives. Use `service_backed` only when you need custom server-side handlers, event consumers, scheduled jobs, or extension-owned data.
A service-backed `owned_schema` extension can register its own `ext_*` PostgreSQL schema and track its schema migrations separately from core.
Core Move Big Rocks owns external routing, auth, rate limits, request tracing, and audit boundaries. Extensions declare endpoint classes and core mounts them into approved path families.
Extensions should publish and consume typed events through the same outbox and event-bus pattern as core so retries, auditability, and operational visibility stay consistent.
Extension installation state, desired schema version, current schema version, and migration history are tracked in the shared runtime store instead of being hidden in ad hoc deploy scripts.
In Practice
First-party and self-built extensions show what “bounded” looks like in practice. These extensions go deeper on the same shared base instead of turning into separate app stacks.
Proof bundle
ATS is a workspace-scoped first-party extension with vacancy lifecycle, branded careers assets, structured application intake, staged candidate review, and bundled agent skills. It is part of the free public first-party bundle set.
Community feature requests is a first-party service-backed extension with a public board, voting flow, seeded triage queue, and admin status management. It is part of the free public first-party bundle set.
Web analytics is a first-party service-backed extension class because it needs public ingest endpoints, admin dashboards, extension APIs, and its own analytics data model while still fitting the shared routing and admin shell. It belongs in the free public first-party bundle set.
Error tracking is a first-party service-backed extension class because it needs Sentry-compatible ingest aliases, issue grouping, extension-owned state, and typed issue events that feed back into support and automation. It belongs in the free public first-party bundle set.
Sales pipeline is a first-party service-backed extension with extension-owned deal state, seeded intake handoff, and a workspace-native admin board. It is part of the free public first-party bundle set.
Customer-built private extensions can add bounded operational portals, domain workflows, or admin surfaces without breaking shared identity, audit, and work records.
The free public first-party bundles install directly by OCI ref. If an instance uses a controlled instance-bound bundle flow, operators can still pass `--license-token`, but the public bundle set does not require it.
$ mbr extensions install ghcr.io/movebigrocks/mbr-ext-ats:v0.8.21 --workspace WORKSPACE_ID$ mbr extensions install ghcr.io/movebigrocks/mbr-ext-community-feature-requests:v0.1.0 --workspace WORKSPACE_ID$ mbr extensions install ghcr.io/movebigrocks/mbr-ext-error-tracking:v0.8.20 --workspace WORKSPACE_ID$ mbr extensions install ghcr.io/movebigrocks/mbr-ext-sales-pipeline:v0.1.0 --workspace WORKSPACE_ID$ mbr extensions install ghcr.io/movebigrocks/mbr-ext-web-analytics:v0.8.20 --workspace WORKSPACE_ID$ mbr extensions validate --id EXTENSION_ID$ mbr extensions activate --id EXTENSION_ID
Setup path
Start with one public core repo, one private instance repo, and zero extra extension repos unless you are building real new extension logic. For a self-built extension, start from the extension SDK and stay bundle-first unless the requirement truly needs service-backed behavior.
Proof bundle
This is the recommended default path for a private custom extension repo.
$ mbr extensions lint . --json$ mbr auth login --url https://app.yourdomain.com$ mbr workspaces list$ mbr extensions verify . --workspace ws_preview --json$ mbr extensions skills list --id EXTENSION_ID
Repo and publication model
The easiest way to keep extension discovery and trust legible is to keep official first-party extensions out of core, publish them from one first-party extensions repo, and split them into separate repos only when they truly need different ownership or release cadence.
Owns runtime contracts, docs, and CLI behavior for extension installation and operation.
Owns the first-party extension sources, release workflow, and `catalog/public-bundles.json` for ATS, community feature requests, error tracking, sales pipeline, web analytics, and enterprise access.
Own the actual install surface for the free public first-party bundle set.
Lifecycle and constraints
A good extension lifecycle makes production safety and evaluation clarity much better, especially when agents are involved.
Public overview of the extension authoring and promotion path.
Reference guide for the extension model and its shared boundaries.
References
Each link goes to the next authoritative page, reference, or support surface.
Move Big Rocks
Start from /agents, use
/docs/cli as the official product
tour, inspect /resources for
source and proof, and review /security
before making deployment or data-handling decisions.