diff --git a/README.md b/README.md
index 8f828b4a50..6e8b83ddc6 100644
--- a/README.md
+++ b/README.md
@@ -9,6 +9,11 @@
**Try it in ~30s** — boot the [HotCRM](https://github.com/objectstack-ai/hotcrm) reference app on [StackBlitz](https://stackblitz.com/github/objectstack-ai/hotcrm) (no install). · Hosted platform: **[ObjectOS](https://cloud.objectos.app)**.
+
+
+ The runtime Console rendering a dashboard defined entirely in metadata — KPI cards, charts, and scheduled reports.
+
+
## What is ObjectStack?
ObjectStack is an **open-source**, metadata-driven backend for building business applications that AI agents can understand, operate, and audit safely — self-hostable, with your data on your own database.
@@ -32,9 +37,71 @@ All core definitions start with **Zod schemas** (1,600+ exported schemas across
See [ARCHITECTURE.md](./ARCHITECTURE.md) for the full microkernel and layer architecture documentation, and [content/docs/concepts/north-star.mdx](./content/docs/concepts/north-star.mdx) for the product north star (metadata protocols · environment-aware runtime · compiled app artifacts).
+## See it in action
+
+ObjectStack ships a runtime **Console** and a visual **Studio** on top of the same metadata — every object, view, dashboard, flow, and permission you declare in code is immediately explorable, editable, and operable in the browser.
+
+**One object, every view.** The same `task` records — rendered as a board, a Gantt schedule, a calendar, or a cover gallery. View types are metadata, and the per-view bindings (kanban group-by, Gantt start/end/progress, calendar date, gallery cover) are auto-derived from the object, so switching layout takes no extra UI code.
+
+
+
+
+
+
+
+
+
+
Board · Gantt · Calendar · Gallery — the same records, four visualizations, zero extra UI code (grid, timeline, and map ship too).
+
+**Model and automate.**
+
+
+
+
+
+
Model business objects as typed metadata — fields, relations, validation, sections · Automate with flows that compile to analyzable metadata.
+
+**Ask your data.**
+
+
+
+ AI agents act through the same objects, actions, and permissions you defined — agent-ready by construction, not bolted on.
+
+
+## How it works
+
+Everything is **typed metadata**. Author a business object once — fields, a color-coded picklist, validation, all declarative:
+
+```ts
+import { ObjectSchema, Field } from '@objectstack/spec/data';
+
+export const Task = ObjectSchema.create({
+ name: 'todo_task',
+ label: 'Task',
+ fields: {
+ subject: Field.text({ label: 'Subject', required: true, searchable: true }),
+ status: Field.select({
+ label: 'Status',
+ required: true,
+ options: [
+ { label: 'In Progress', value: 'in_progress', color: '#3B82F6' },
+ { label: 'Completed', value: 'completed', color: '#10B981' },
+ ],
+ }),
+ due_date: Field.date({ label: 'Due Date' }),
+ },
+});
+```
+
+From that single schema, ObjectStack compiles a running backend — the database table, an auto-generated REST API and typed client SDK, the Console & Studio UI (list, board, calendar, Gantt…), and MCP tools for agents — all behind the same permissions, over a database you host.
+
+
+
+
+
## Key Features
-- **Built for AI, not retrofitted** — Business objects, permissions, flows, APIs, and UI are declared as typed metadata, not hand-written. A typical enterprise module collapses from tens of thousands of lines of CRUD/glue into a few hundred lines of declarative schema — **roughly two orders of magnitude less code**, small enough for an AI agent to load end-to-end and safely refactor across data, API, UI, and permissions in a single change.
+- **Built for AI, not retrofitted** — Objects, permissions, flows, APIs, and UI are declarative typed metadata, not hand-written code — small enough for an AI agent to load and safely refactor end-to-end.
- **Agent-ready metadata** — Business objects, actions, and permissions are explicit enough for AI agents to inspect and use.
- **Automatic tool surface** — Metadata can power REST APIs, client SDKs, UI views, and MCP tools without redefining each action by hand.
- **Protocol-first schemas** — All schemas are defined with Zod; TypeScript types are derived via `z.infer<>`.
@@ -52,8 +119,6 @@ See [ARCHITECTURE.md](./ARCHITECTURE.md) for the full microkernel and layer arch
## Why AI-native?
-**Built for AI, not retrofitted.**
-
Most internal-tool and low-code platforms were designed for humans clicking screens. AI support is usually added later as a chat box that can call a few predefined queries. ObjectStack starts from a different assumption: **AI agents need a structured, bounded, and auditable business backend before they can safely perform real work** — and the entire business system has to be small enough to fit in an agent's context window.
A typical enterprise application is tens of thousands of lines of CRUD, forms, queries, permissions, and API glue spread across dozens of files. ObjectStack collapses the same surface into a few hundred lines of typed metadata — **roughly two orders of magnitude less code for a developer (or an AI agent) to read, write, and maintain.**
@@ -147,6 +212,9 @@ Cloud, package registry, and environment management subcommands (`os publish`, `
## Package Directory
+
+72 published packages across core, engine, drivers, client, plugins, services, adapters, tools, and examples — click to expand.
+
### Core
| Package | Description |
@@ -248,11 +316,13 @@ Cloud, package registry, and environment management subcommands (`os publish`, `
| [`@objectstack/example-crm`](examples/app-crm) | Minimal CRM smoke-test workspace — validates the metadata loading pipeline | Intermediate |
| [HotCRM](https://github.com/objectstack-ai/hotcrm) | Full-featured enterprise CRM reference app (separate repo) | Advanced |
+
+
## Codebase Metrics
| Metric | Value |
| :--- | :--- |
-| Source packages | 51 |
+| Source packages | 72 |
| Apps | 2 (account, docs) |
| Framework adapters | 7 (Express, Fastify, Hono, NestJS, Next.js, Nuxt, SvelteKit) |
| Database drivers | 3 (Memory, SQL, MongoDB) |
@@ -260,7 +330,7 @@ Cloud, package registry, and environment management subcommands (`os publish`, `
| Exported schemas | 1,600+ |
| `.describe()` annotations | 8,750+ |
| Service contracts | 27 |
-| Test files | 229 |
+| Test files | 676 |
| Tests passing | 6,507 |
## Architecture
diff --git a/docs/screenshots/architecture.png b/docs/screenshots/architecture.png
new file mode 100644
index 0000000000..f84a1f0351
Binary files /dev/null and b/docs/screenshots/architecture.png differ
diff --git a/docs/screenshots/architecture.svg b/docs/screenshots/architecture.svg
new file mode 100644
index 0000000000..24e401b6ab
--- /dev/null
+++ b/docs/screenshots/architecture.svg
@@ -0,0 +1,16 @@
+
\ No newline at end of file
diff --git a/docs/screenshots/ask-ai.png b/docs/screenshots/ask-ai.png
new file mode 100644
index 0000000000..15a6fd09a5
Binary files /dev/null and b/docs/screenshots/ask-ai.png differ
diff --git a/docs/screenshots/automation.png b/docs/screenshots/automation.png
new file mode 100644
index 0000000000..d18ef731e5
Binary files /dev/null and b/docs/screenshots/automation.png differ
diff --git a/docs/screenshots/calendar.png b/docs/screenshots/calendar.png
new file mode 100644
index 0000000000..2560b48029
Binary files /dev/null and b/docs/screenshots/calendar.png differ
diff --git a/docs/screenshots/dashboard.png b/docs/screenshots/dashboard.png
new file mode 100644
index 0000000000..5573d9d4a5
Binary files /dev/null and b/docs/screenshots/dashboard.png differ
diff --git a/docs/screenshots/gallery.png b/docs/screenshots/gallery.png
new file mode 100644
index 0000000000..326b038735
Binary files /dev/null and b/docs/screenshots/gallery.png differ
diff --git a/docs/screenshots/gantt.png b/docs/screenshots/gantt.png
new file mode 100644
index 0000000000..51d8bea41b
Binary files /dev/null and b/docs/screenshots/gantt.png differ
diff --git a/docs/screenshots/kanban.png b/docs/screenshots/kanban.png
new file mode 100644
index 0000000000..3255d9d718
Binary files /dev/null and b/docs/screenshots/kanban.png differ
diff --git a/docs/screenshots/modeling.png b/docs/screenshots/modeling.png
new file mode 100644
index 0000000000..065917e300
Binary files /dev/null and b/docs/screenshots/modeling.png differ