Limitations and honest status
Kurabase is experimental developer infrastructure. Use its local stack and tests to evaluate the design, not as a claim of production readiness.
Not provided
- PostgreSQL wire compatibility or complete PostgreSQL behavior.
- Full SQL:2023 conformance.
- Production high availability, backups, or operational guarantees.
- Realtime subscriptions or object storage.
- A hosted, general-purpose authentication provider.
- A Supabase-compatible
auth.*schema or user-management API. The narrowkura_auth_users/kura_auth_identitiescatalog is pseudonymous, chain-public, and not an authentication authority. - Cross-chain access.
- Privacy for public-chain records.
- A general-purpose smart-contract audit.
- A live bundled Privy/ZeroDev tenant, paymaster policy, KMS/HSM session-key adapter, or public-network EIP-7702/4337 acceptance. The repository proves the account-owned, gateway-attested calldata path against Anvil; operators must complete those provider and network checks before production use.
- In this release, the
GatewayPlanABI includes its originating session digest so individual session revocation cancels a pending plan. Deploy the gateway and matching contract artifact together; older instance contracts are intentionally incompatible with this AA path.
SQL functions
SQL-language RPC supports scalar, table-returning, and atomic mutating functions. Procedural functions and unsupported SQL return an explicit error.
V2 additionally ships a bounded EXECUTION ON CHAIN profile for an
address-keyed uint256 relation: a direct point lookup or a caller-debit /
address-parameter-credit mutation. It also supports the explicitly bounded
kura_erc20 six-function package: zero-address anchored supply, address
balances, composite (owner, spender) allowances, transfer, approve, and
atomic transferFrom, with ERC-165 capability installation and standard
Transfer / Approval logs. These functions are directly callable at the
instance ABI and never fall back to gateway RPC.
Arbitrary mutation shapes, loops, scans, joins, aggregates, dynamic ABI types,
mint/burn or fee logic, external calls, and cross-instance on-chain writes are
not implemented; they reject explicitly. ENS remains a read-only external SQL
schema feature for application reads, not a cross-instance EVM-call mechanism.
The distinct same-chain management DML route
requires target-side privileged gateway delegation. Address-bound
external foreign keys are available for integrity
checks and logical-NULL reads, but do not add cascading behaviour.
Filter boundaries
JSONB containment and contained-by filters are supported. One-dimensional integer[], text[], boolean[], and uuid[] columns support the overlaps filter on the native REST path. Ranges, multidimensional or bounded arrays, array containment/equality/order filters, and JSONB overlap remain unsupported. Relational or administrative DataFusion SELECT expressions over JSON or array-bearing tables remain intentionally limited.
Canonical scalar boundaries
date, time(p), timestamp(p), timestamptz(p), and bytea are admitted
cell types. Temporal precision p is zero through six; values are validated
before a chain write, timestamp is stored without a zone, and timestamptz
is normalized to UTC RFC3339. bytea accepts only PostgreSQL \\x hexadecimal
input and is stored as lowercase hexadecimal. The same canonical codec applies
to RLS/CHECK predicates, SQL BETWEEN / IN comparisons, and string-literal
casts such as '2024-03-01T00:30:00+01:00'::timestamptz.
varchar(n) enforces a Unicode character-count limit. character(n) / CHAR(n)
also uses that limit, then stores a trailing-space-padded canonical value. A
literal compared with a CHAR(n) column is normalized through the same codec,
so WHERE code = 'A' matches stored CHAR(3) value A··.
User-defined enums are catalog types: CREATE TYPE post_state AS ENUM ('draft', 'published') records an ordered, bounded label list in the same
chain-replayed catalog as tables and functions. Writes, SQL-function
arguments/returns, equality/inequality, IN, and a string-literal enum cast
validate labels before execution. ALTER TYPE, enum ordering/range predicates
(>, <, BETWEEN), and enum ORDER BY currently return
UnsupportedFeature rather than accidentally applying string ordering.
Decimal boundary
numeric(p,s) and decimal(p,s) are exact fixed-scale values when p is 1
through 70 and s is between zero and p. They are returned as strings so a
browser never loses precision, including in normal queries such as amount > 1.00. Unqualified numeric, precision above 70, and uint256
arithmetic/range filtering are not implemented.
Production checklist
Before treating an EVM deployment as production, separately assess custody, key management, privacy, transaction fees, indexer integrity, gateway availability, rate limits, monitoring, incident response, and an independent security review.