{"slug": "show-hn-instancez-open-source-declarative-single-binary-supabase-alternative", "title": "Show HN: Instancez – Open-Source Declarative Single-Binary Supabase Alternative", "summary": "Instancez has released an open-source, single-binary Supabase alternative that uses a declarative YAML schema to define databases, authentication, storage, and functions, enabling self-hosting in seconds. The tool is compatible with existing Supabase clients and supports automatic schema migration, LLM-friendly configuration, and deployment anywhere including locally, Docker, or AWS Lambda.", "body_md": "**An LLM-friendly, single-binary, drop-in replacement to Supabase.**\n\nDefined in one YAML file — self-hosted in seconds.\n\n**One YAML file is the schema.** Edit`instancez.yaml`\n\nand instancez diffs it against the live database, applying just the delta migration (including drops) — no migration files to write or run by hand.**Compatible with Supabase clients**(`@supabase/supabase-js`\n\n, and others). Point your existing client at instancez and it works: auth, PostgREST-style REST, RPC, storage.**Runs anywhere.** One self-contained, portable binary — locally, in Docker, on a VM, or on AWS Lambda.**LLM-friendly.** A simple, easy-to-understand YAML schema — tables, RLS, storage, RPC, functions — one file an LLM (or teammate) can read end to end.\n\n`instancez.yaml`\n\nand `inz dev`\n\nbooting, then a live supabase-js app: anonymous sign-in, then insert / update / delete.\n\n*The built-in dashboard at /dashboard. Under inz dev, schema edits write back to instancez.yaml as a diff you review before it applies.*\n\n```\n# macOS / Linux\ncurl -fsSL https://get.instancez.ai | sh\n\n# Windows (PowerShell):\nirm https://get.instancez.ai/windows | iex\n```\n\nOr build from source. This needs Go 1.25+ and Node 22+. The dashboard is embedded into the binary, so build it before the Go install:\n\n```\ngit clone https://github.com/instancez/instancez.git\ncd instancez\n(cd dashboard && npm ci && npm run build) && go install ./cmd/inz\nmkdir my-app && cd my-app\ninz init\ninz dev --embedded-pg   # no Postgres to install; or drop the flag and set INSTANCEZ_DATABASE_URL to use your own\n\n# you can run the following command or watch the output of the previous command for your secret key and publishable key\ncat .development.env    # in a separate terminal — publishable + secret keys, generated on first run\n```\n\n`inz dev`\n\nprovisions the Postgres roles, applies the schema, and serves the API at `http://localhost:8080`\n\n. Editing `instancez.yaml`\n\nre-applies the schema automatically.\n\nHere's the whole app `inz init`\n\nscaffolds (`instancez.yaml`\n\n, comments trimmed):\n\n```\nversion: 1\n\nproject:\n  name: \"my-app\"\n\nproviders:\n  storage:\n    type: local\n\nauth:\n  jwt_expiry: 15m\n  refresh_tokens: true\n  refresh_token_expiry: 7d\n  email:\n    verify_email: false\n\ntables:\n  todos:\n    fields:\n      - name: id\n        type: bigserial\n        primary_key: true\n      - name: user_id\n        foreign_key:\n          references: auth.users.id\n          on_delete: cascade\n      - name: title\n        type: text\n        required: true\n      - name: status\n        type: text\n        required: true\n        enum: [pending, active, done]\n        default: pending\n      - name: created_at\n        type: timestamptz\n        required: true\n        default: now()\n    rls:\n      - operations: [select, insert, update, delete]\n        using: \"user_id = auth.uid()\"\n        with_check: \"user_id = auth.uid()\"\n\nstorage:\n  avatars:\n    public: true\n    max_size: 5MB\n    types: [image/*]\n    rls:\n      - operations: [insert]\n        with_check: \"auth.is_authenticated()\"\n      - operations: [update]\n        using: \"auth.is_authenticated()\"\n        with_check: \"auth.is_authenticated()\"\n      - operations: [delete]\n        using: \"auth.is_authenticated()\"\n\nfunctions:\n  todos:\n    runtime: node\n    file: functions/todos.js\n    auth_required: true\n```\n\nQuery it with `supabase-js`\n\n:\n\n``` js\nimport { createClient } from '@supabase/supabase-js'\n\nconst supabase = createClient('http://localhost:8080', process.env.INSTANCEZ_PUBLISHABLE_KEY)\n\nconst { data, error } = await supabase\n  .from('todos')\n  .select('*')\n```\n\nOr with `curl`\n\n:\n\n```\ncurl 'http://localhost:8080/rest/v1/todos?select=*' \\\n  -H \"apikey: $INSTANCEZ_PUBLISHABLE_KEY\"\n```\n\nThe scaffolded `todos`\n\ntable has a `user_id = auth.uid()`\n\nRLS policy, so rows are scoped to the signed-in user. To read without signing in while you experiment, set `using: \"true\"`\n\non the policy in `instancez.yaml`\n\n.\n\nThe repo ships an [agent skill](/instancez/instancez/blob/main/skills/instancez/SKILL.md) that teaches your coding agent the YAML syntax, RLS patterns, and the `inz`\n\nCLI. Install it into your project with the [skills CLI](https://github.com/vercel-labs/skills), which supports Claude Code, Codex, Cursor, OpenCode, Gemini CLI, Copilot, and more:\n\n```\nnpx skills add instancez/instancez                  # auto-detects your agents\nnpx skills add instancez/instancez -a codex         # or target one explicitly\n```\n\nClaude Code users can install it as a plugin instead:\n\n```\n/plugin marketplace add instancez/instancez\n/plugin install instancez@instancez\n```\n\nFor any other agent, the skill is a single Markdown file: drop [ SKILL.md](/instancez/instancez/blob/main/skills/instancez/SKILL.md) into your project and reference it from\n\n`AGENTS.md`\n\n. Details in the [Coding Agents docs](https://instancez.github.io/coding-agents/).\n\n**Self-host it yourself:**\n\n```\ninz serve\n```\n\nSecrets load automatically from `.production.env`\n\nif present, alongside the regular process environment.\n\n**Or deploy to instancez Cloud:**\n\n```\ninz cloud deploy   # push instancez.yaml straight to a managed project\n```\n\nSelf-hosting also runs on [Docker](https://instancez.github.io/deploy/docker/), [Kubernetes](https://instancez.github.io/deploy/kubernetes/), [AWS Lambda](https://instancez.github.io/deploy/lambda/), or a [bare VM](https://instancez.github.io/deploy/self-hosted/). [More on deployment →](https://instancez.github.io/deploy/docker/)\n\n| instancez | Supabase | |\n|---|---|---|\n| Auth (password, magic link, OTP, anonymous, OAuth, TOTP MFA) | Yes (no phone/SMS) | Yes |\n| PostgREST-style REST API | Yes | Yes |\n| SQL functions (RPC) | Yes | Yes |\n| JavaScript functions | Yes (Node.js) | Yes (Deno) |\n| Storage (local or S3, RLS, signed URLs, image resize) | Yes (JPEG/PNG only, no WebP/AVIF) | Yes |\n| Row-Level Security (RLS) | Yes | Yes |\n| Realtime / websockets | Not supported yet | Yes |\n| Schema definition | One declarative YAML file | SQL migrations + dashboard |\n| Self-host footprint | One binary + Postgres | Multi-container stack |\n| OAuth providers built in | Google, GitHub | Many |\n\n[ docs/examples/gearstore](/instancez/instancez/blob/main/docs/examples/gearstore) is a full, runnable project: a React storefront talking to instancez over\n\n`@supabase/supabase-js`\n\n, exercising auth, RLS, and querying end to end. `docker compose up --build`\n\ngets you a working app with seeded data.The docs also walk through two smaller builds start to finish: an [ecommerce store](https://instancez.github.io/examples/ecommerce-store/) with Stripe Checkout, and a [file gallery](https://instancez.github.io/examples/file-gallery/) with direct-to-S3 uploads.\n\nFull docs live at ** instancez.github.io**:\n\nContributions are welcome. Start with [CONTRIBUTING.md](/instancez/instancez/blob/main/CONTRIBUTING.md) for the dev setup, the test loop, and how the codebase is laid out. Bug reports and feature requests go through the [issue templates](/instancez/instancez/blob/main/.github/ISSUE_TEMPLATE).\n\nFound a vulnerability? Please follow the private disclosure process in [SECURITY.md](/instancez/instancez/blob/main/SECURITY.md) rather than opening a public issue.\n\nApache License 2.0, see [LICENSE](/instancez/instancez/blob/main/LICENSE). Contributions are covered by the [Contributor License Agreement](/instancez/instancez/blob/main/CLA.md).", "url": "https://wpnews.pro/news/show-hn-instancez-open-source-declarative-single-binary-supabase-alternative", "canonical_source": "https://github.com/instancez/instancez", "published_at": "2026-07-21 14:34:35+00:00", "updated_at": "2026-07-21 14:42:37.203258+00:00", "lang": "en", "topics": ["developer-tools", "artificial-intelligence", "ai-tools"], "entities": ["Instancez", "Supabase", "Go", "Node.js", "PostgreSQL", "Docker", "AWS Lambda"], "alternates": {"html": "https://wpnews.pro/news/show-hn-instancez-open-source-declarative-single-binary-supabase-alternative", "markdown": "https://wpnews.pro/news/show-hn-instancez-open-source-declarative-single-binary-supabase-alternative.md", "text": "https://wpnews.pro/news/show-hn-instancez-open-source-declarative-single-binary-supabase-alternative.txt", "jsonld": "https://wpnews.pro/news/show-hn-instancez-open-source-declarative-single-binary-supabase-alternative.jsonld"}}