Open-source, self-hostable business software built from metadata.
Define entities, fields, apps, and workflows. Publish them. Qryvanta turns that metadata into runtime APIs, product surfaces, and worker-driven automation without hiding the architecture behind a closed platform.
Active development
Qryvanta is not ready for production use yet.
Contact: contact@qryvanta.org
Teams that need business software usually get pushed into one of two bad options:
- buy a closed platform and accept its boundaries
- build a custom stack and own every schema, admin screen, and workflow path by hand
Qryvanta is building a third option. The code is open. The runtime is explicit. The deployment story starts with self-hosting.
- Define metadata for entities and fields, then publish immutable versions.
- Generate runtime CRUD and query APIs from published metadata.
- Build tenant-scoped apps, forms, views, and workspaces on top of the same model.
- Run workflows through inline or queued workers with native triggers and typed actions.
This repository is the OSS product surface for qryvanta.org.
qryvanta.com is the planned managed-cloud surface for teams that want hosted operations later. The OSS repository stays self-hosting first.
- Open source first. You can inspect the architecture, run it yourself, and keep control of deployment.
- Rust first. The API, worker, and shared runtime are built on a Rust core aimed at long-lived business systems.
- Metadata driven. Platform behavior changes through published metadata instead of hardcoded business schemas.
- Cloud optional. The open-source path is the default here, with a managed option planned separately.
Current baseline in the repository:
- Metadata entities and fields with draft and publish lifecycle.
- Runtime record APIs generated from published metadata definitions.
- Product app paths for admin, maker, and worker flows.
- Authentication with email/password, passkeys, MFA, server-side sessions, and tenant switching.
- Tenant-scoped RBAC, audit logging, security event taxonomy, and PostgreSQL RLS coverage across major runtime tables.
- Workflow definitions with immutable published versions, native schedules, webhooks, forms, inbound email, approval triggers, and queued execution through
qryvanta-worker. - Shared Rust to TypeScript API contracts generated into
@qryvanta/api-types.
For feature details and current behavior, use the docs site and roadmap:
- Product docs:
apps/docs/content/docs - Repository roadmap:
docs/ROADMAP.md
Prerequisites: Rust stable, Node.js 22+, Docker + Docker Compose, pnpm 10+.
pnpm install
pnpm infra:up
cp .env.example .env
cargo xcheck
pnpm devVerify the API:
curl http://127.0.0.1:3001/healthExpected response:
{"status":"ok","ready":true,"postgres":{"status":"ok","detail":null},"redis":{"status":"ok","detail":null}}Local URLs:
- API:
http://localhost:3001 - Web app:
http://localhost:3000 - Landing site:
http://localhost:3003 - Docs:
http://127.0.0.1:3002
If you want a seeded development tenant:
pnpm dev:seedDefault seeded users:
admin@qryvanta.local/adminuser@qryvanta.local/admin
For passkeys and session cookies in local development, keep auth URLs on localhost:
FRONTEND_URL=http://localhost:3000NEXT_PUBLIC_API_BASE_URL=http://localhost:3001WEBAUTHN_RP_ORIGIN=http://localhost:3000TOTP_ENCRYPTION_KEY=<64-char hex key>
WORKFLOW_EXECUTION_MODE=inline is the default local mode.
To run queued workflow execution, start a worker:
cargo run -p qryvanta-workerOptional integrations supported in this repository:
- Redis for shared sessions, rate limiting, and queue stats caching
- Qrywell-backed search sync and analytics
- SMTP for transactional email delivery
- Secret references for 1Password, AWS Secrets Manager, AWS SSM, Vault, and GCP Secret Manager
See the docs site for configuration details and self-hosting notes.
apps/api: Axum API and composition rootapps/worker: queued workflow worker runtimeapps/web: authenticated product appapps/landing: public site forqryvanta.orgapps/docs: Fumadocs documentation sitecrates/core: shared primitives and error modelcrates/domain: business invariants and value objectscrates/application: use-cases and portscrates/infrastructure: adapters for database, queue, and external systemspackages/ui: shared UI packagepackages/api-types: generated TypeScript transport contracts
pnpm dev: run API, web, landing, and docspnpm dev:seed: seed a realistic development tenantpnpm infra:up: start local Postgres and Redispnpm infra:down: stop local infrastructurepnpm dev:docs: run docs onlypnpm dev:landing: run landing onlypnpm build: build JS workspacespnpm check: static checks and contract checkspnpm lint: lint checkspnpm test: workspace testscargo xcheck: Rust checkscargo xclippy: Rust lintscargo xtest: Rust tests
- Product and self-hosting docs:
apps/docs/content/docs - Contributor workflow:
CONTRIBUTING.md - Agent and architecture guardrails:
AGENTS.md - Engineering standards:
apps/docs/content/docs/development/engineering-standards.mdx
If you use local coding-agent presets:
cp -R .agent.example .agent.agent/ is machine-local and git-ignored.
Apache 2.0. See LICENSE.