{"id":48469411,"url":"https://github.com/objectstack-ai/framework","last_synced_at":"2026-04-07T06:01:06.727Z","repository":{"id":333264847,"uuid":"1136691870","full_name":"objectstack-ai/framework","owner":"objectstack-ai","description":"The ObjectStack Developer Framework. Microkernel runtime, CLI toolchain — orchestrating ObjectQL, ObjectOS, and ObjectUI into a unified development experience.","archived":false,"fork":false,"pushed_at":"2026-04-02T13:11:38.000Z","size":15397,"stargazers_count":2,"open_issues_count":15,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-02T17:28:04.275Z","etag":null,"topics":["json-schema","protocol","standard","typescript-interfaces"],"latest_commit_sha":null,"homepage":"https://docs.objectstack.ai","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/objectstack-ai.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-18T06:47:54.000Z","updated_at":"2026-04-02T13:11:50.000Z","dependencies_parsed_at":"2026-02-11T17:02:27.158Z","dependency_job_id":null,"html_url":"https://github.com/objectstack-ai/framework","commit_stats":null,"previous_names":["objectstack-ai/spec","objectstack-ai/framework"],"tags_count":1460,"template":false,"template_full_name":null,"purl":"pkg:github/objectstack-ai/framework","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectstack-ai%2Fframework","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectstack-ai%2Fframework/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectstack-ai%2Fframework/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectstack-ai%2Fframework/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/objectstack-ai","download_url":"https://codeload.github.com/objectstack-ai/framework/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectstack-ai%2Fframework/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31501903,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["json-schema","protocol","standard","typescript-interfaces"],"created_at":"2026-04-07T06:01:05.907Z","updated_at":"2026-04-07T06:01:06.721Z","avatar_url":"https://github.com/objectstack-ai.png","language":"TypeScript","readme":"# ObjectStack Framework\n\n![TypeScript](https://img.shields.io/badge/TypeScript-5.x-blue.svg)\n[![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n![Version](https://img.shields.io/badge/version-v4.0.1-green.svg)\n![Tests](https://img.shields.io/badge/tests-6%2C507%20passing-brightgreen.svg)\n\n\u003e A metadata-driven developer framework with microkernel runtime, CLI toolchain, official plugins, framework adapters, and Studio IDE — orchestrating ObjectQL, ObjectOS, and ObjectUI into a unified development experience.\n\n## What is ObjectStack?\n\nObjectStack is a metadata-driven platform built on a **microkernel architecture** and three protocol layers:\n\n- **ObjectQL** (Data Layer) — Define objects, fields, queries, and relations as metadata\n- **ObjectOS** (Control Layer) — Runtime, permissions, automation, and plugin lifecycle\n- **ObjectUI** (View Layer) — Presentation metadata: apps, views, dashboards, and actions\n\nAll business logic is expressed as **Zod schemas** (1,600+ exported schemas across 200 schema files). The microkernel loads plugins and services at startup, enabling a fully composable and extensible stack with zero vendor lock-in.\n\nSee [ARCHITECTURE.md](./ARCHITECTURE.md) for the full microkernel and layer architecture documentation.\n\n## Key Features\n\n- **Protocol-first** — All schemas defined with Zod; TypeScript types are derived via `z.infer\u003c\u003e`\n- **Microkernel plugin system** — DI container, EventBus, and lifecycle hooks (init → start → destroy)\n- **Multi-database support** — In-memory, PostgreSQL, MySQL, SQLite, and Turso/libSQL drivers\n- **7 framework adapters** — Express, Fastify, Hono, NestJS, Next.js, Nuxt, SvelteKit\n- **Client SDK + React hooks** — `useQuery`, `useMutation`, `usePagination` out of the box\n- **Built-in authentication** — [better-auth](https://www.better-auth.com/) via `plugin-auth`\n- **RBAC / RLS / FLS security** — Role-based, row-level, and field-level access control\n- **Automation engine** — DAG-based flows, triggers, and workflow management\n- **AI service** — Agent, Tool, and Skill protocol built on the Vercel AI SDK\n- **Studio IDE** — Web-based metadata explorer, schema inspector, and AI assistant\n- **CLI toolchain** — `os init`, `os dev`, `os studio`, `os serve`, `os validate`, and more\n\n## Quick Start\n\n### For Application Developers\n\n```bash\n# Create a new project\nnpx @objectstack/cli init my-app\ncd my-app\n\n# Start development server\nos dev\n\n# Open Studio IDE\nos studio\n# → API:    http://localhost:3000/api/v1/\n# → Studio: http://localhost:3000/_studio/\n```\n\n### For Framework Contributors\n\n```bash\n# 1. Clone and install\ngit clone https://github.com/objectstack-ai/framework.git\ncd framework\npnpm install\n\n# 2. Build all packages\npnpm build\n\n# 3. Run tests\npnpm test\n\n# 4. Start Documentation site\npnpm docs:dev\n# → http://localhost:3000/docs\n```\n\n## Monorepo Scripts\n\n| Script | Description |\n| :--- | :--- |\n| `pnpm build` | Build all packages (excludes docs) |\n| `pnpm dev` | Start development server |\n| `pnpm studio` | Launch Studio IDE with dev server |\n| `pnpm test` | Run all tests |\n| `pnpm doctor` | Check environment health |\n| `pnpm setup` | Install dependencies and build spec |\n| `pnpm docs:dev` | Start documentation site locally |\n| `pnpm docs:build` | Build documentation for production |\n\n## CLI Commands\n\n```bash\nos init [name]    # Scaffold a new project\nos dev            # Start dev server with hot-reload\nos studio         # Start dev server + Studio IDE\nos serve          # Start production server\nos compile        # Build deployable JSON artifact\nos validate       # Validate configuration against protocol\nos info           # Display metadata summary\nos generate       # Scaffold objects, views, and flows\nos doctor         # Check environment health\n```\n\n## Package Directory\n\n### Core\n\n| Package | Description |\n| :--- | :--- |\n| [`@objectstack/spec`](packages/spec) | Protocol definitions — Zod schemas, TypeScript types, JSON Schemas, constants |\n| [`@objectstack/core`](packages/core) | Microkernel runtime — Plugin system, DI container, EventBus, Logger |\n| [`@objectstack/types`](packages/types) | Shared TypeScript type utilities |\n\n### Engine\n\n| Package | Description |\n| :--- | :--- |\n| [`@objectstack/objectql`](packages/objectql) | ObjectQL query engine and schema registry |\n| [`@objectstack/runtime`](packages/runtime) | Runtime bootstrap — DriverPlugin, AppPlugin |\n| [`@objectstack/metadata`](packages/metadata) | Metadata loading and persistence |\n| [`@objectstack/rest`](packages/rest) | Auto-generated REST API layer |\n\n### Drivers\n\n| Package | Description |\n| :--- | :--- |\n| [`@objectstack/driver-memory`](packages/plugins/driver-memory) | In-memory driver (development and testing) |\n| [`@objectstack/driver-sql`](packages/plugins/driver-sql) | SQL driver — PostgreSQL, MySQL, SQLite (production) |\n| [`@objectstack/driver-turso`](packages/plugins/driver-turso) | Turso/libSQL driver |\n\n### Client\n\n| Package | Description |\n| :--- | :--- |\n| [`@objectstack/client`](packages/client) | Client SDK — CRUD, batch API, error handling |\n| [`@objectstack/client-react`](packages/client-react) | React hooks — `useQuery`, `useMutation`, `usePagination` |\n\n### Plugins\n\n| Package | Description |\n| :--- | :--- |\n| [`@objectstack/plugin-hono-server`](packages/plugins/plugin-hono-server) | Hono-based HTTP server plugin |\n| [`@objectstack/plugin-msw`](packages/plugins/plugin-msw) | Mock Service Worker plugin for browser testing |\n| [`@objectstack/plugin-auth`](packages/plugins/plugin-auth) | Authentication plugin (better-auth) |\n| [`@objectstack/plugin-security`](packages/plugins/plugin-security) | RBAC, Row-Level Security, Field-Level Security |\n| [`@objectstack/plugin-dev`](packages/plugins/plugin-dev) | Developer mode — in-memory stubs for all services |\n| [`@objectstack/plugin-audit`](packages/plugins/plugin-audit) | Audit logging plugin |\n| [`@objectstack/plugin-setup`](packages/plugins/plugin-setup) | First-run setup wizard |\n\n### Services\n\n| Package | Description |\n| :--- | :--- |\n| [`@objectstack/service-feed`](packages/services/service-feed) | Activity feed service |\n| [`@objectstack/service-automation`](packages/services/service-automation) | Automation engine — flows, triggers, DAG-based workflows |\n| [`@objectstack/service-ai`](packages/services/service-ai) | AI service — Agent, Tool, Skill, Vercel AI SDK integration |\n| [`@objectstack/service-realtime`](packages/services/service-realtime) | Real-time events and subscriptions |\n| [`@objectstack/service-i18n`](packages/services/service-i18n) | Internationalization service |\n\n### Framework Adapters\n\n| Package | Description |\n| :--- | :--- |\n| [`@objectstack/express`](packages/adapters/express) | Express adapter |\n| [`@objectstack/fastify`](packages/adapters/fastify) | Fastify adapter |\n| [`@objectstack/hono`](packages/adapters/hono) | Hono adapter (Node.js, Bun, Deno, Cloudflare Workers) |\n| [`@objectstack/nestjs`](packages/adapters/nestjs) | NestJS module integration |\n| [`@objectstack/nextjs`](packages/adapters/nextjs) | Next.js App Router adapter |\n| [`@objectstack/nuxt`](packages/adapters/nuxt) | Nuxt adapter (h3-based) |\n| [`@objectstack/sveltekit`](packages/adapters/sveltekit) | SvelteKit adapter |\n\n### Tools \u0026 Apps\n\n| Package | Description |\n| :--- | :--- |\n| [`@objectstack/cli`](packages/cli) | CLI — `init`, `dev`, `serve`, `studio`, `compile`, `validate`, `generate` |\n| [`create-objectstack`](packages/create-objectstack) | Project scaffolder (`npx create-objectstack`) |\n| [`objectstack-vscode`](packages/vscode-objectstack) | VS Code extension — autocomplete, validation, diagnostics |\n| [`@objectstack/studio`](apps/studio) | Studio IDE — metadata explorer, schema inspector, AI assistant |\n| [`@objectstack/docs`](apps/docs) | Documentation site (Fumadocs + Next.js) |\n\n### Examples\n\n| Example | Description | Level |\n| :--- | :--- | :--- |\n| [`@example/app-todo`](examples/app-todo) | Task management app — objects, views, dashboards, flows | Beginner |\n| [`@example/app-crm`](examples/app-crm) | Enterprise CRM — accounts, contacts, opportunities, leads | Intermediate |\n| [`@example/app-host`](examples/app-host) | Server host — multi-app orchestration with plugins | Advanced |\n| [`@example/plugin-bi`](examples/plugin-bi) | BI plugin — analytics objects and reports | Intermediate |\n\n## Codebase Metrics\n\n| Metric | Value |\n| :--- | :--- |\n| Packages | 27 |\n| Zod schema files | 200 |\n| Exported schemas | 1,600+ |\n| `.describe()` annotations | 8,750+ |\n| Service contracts | 27 |\n| Test files | 229 |\n| Tests passing | 6,507 |\n\n## Architecture\n\nObjectStack uses a **microkernel architecture** where the kernel provides only the essential infrastructure (DI, EventBus, lifecycle), and all capabilities are delivered as plugins. The three protocol layers sit above the kernel:\n\n```\n┌─────────────────────────────────────────────────────┐\n│              ObjectKernel (Core)                     │\n│  ┌───────────────────────────────────────────────┐  │\n│  │  Plugin Lifecycle Manager                     │  │\n│  │  • Dependency Resolution (Topological Sort)   │  │\n│  │  • Init → Start → Destroy Phases              │  │\n│  └───────────────────────────────────────────────┘  │\n│  ┌───────────────────────────────────────────────┐  │\n│  │  Service Registry (DI Container)              │  │\n│  │  • registerService(name, service)             │  │\n│  │  • getService\u003cT\u003e(name): T                     │  │\n│  └───────────────────────────────────────────────┘  │\n│  ┌───────────────────────────────────────────────┐  │\n│  │  Event Bus (Hook System)                      │  │\n│  │  • hook(name, handler)                        │  │\n│  │  • trigger(name, ...args)                     │  │\n│  └───────────────────────────────────────────────┘  │\n└─────────────────────────────────────────────────────┘\n              │\n    ┌─────────┴─────────┬──────────┬──────────┐\n    │                   │          │          │\n┌───▼────┐      ┌───────▼──┐   ┌──▼───┐  ┌───▼────┐\n│ObjectQL│      │  Driver  │   │ Hono │  │  App   │\n│ Plugin │      │  Plugin  │   │Server│  │ Plugin │\n└────────┘      └──────────┘   └──────┘  └────────┘\n```\n\nSee [ARCHITECTURE.md](./ARCHITECTURE.md) for the complete design documentation including the plugin lifecycle state machine, dependency graph, and design decisions.\n\n## Roadmap\n\nSee [ROADMAP.md](./ROADMAP.md) for the planned phases covering runtime hardening, framework adapter completion, developer experience improvements, performance optimization, and security hardening.\n\nStudio-specific roadmap: [apps/studio/ROADMAP.md](./apps/studio/ROADMAP.md)\n\n## Contributing\n\nWe welcome contributions. Please read [CONTRIBUTING.md](./CONTRIBUTING.md) for the development workflow, coding standards, testing requirements, and documentation guidelines.\n\nKey standards:\n- **Zod-first** — all schemas start with Zod; TypeScript types are derived via `z.infer\u003c\u003e`\n- **camelCase** for configuration keys (e.g., `maxLength`, `defaultValue`)\n- **snake_case** for machine names / data values (e.g., `project_task`, `first_name`)\n\n## Documentation\n\nFull documentation: **[https://docs.objectstack.ai](https://docs.objectstack.ai)**\n\nRun locally: `pnpm docs:dev`\n\n## License\n\nApache 2.0 © ObjectStack\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fobjectstack-ai%2Fframework","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fobjectstack-ai%2Fframework","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fobjectstack-ai%2Fframework/lists"}