The communication layer for PostgreSQL applications.
Chat, a thread on a ticket, an activity feed, and status that commits with your write. Clients call SQL. There is no Node, Nest, or Kafka in Core.
cp .env.example .env && ./scripts/up.sh
In-memory SDK. Type in one window; the other shows it. Point the Flutter app at a real host in settings.
Also
cp .env.example .env && ./scripts/up.sh
# open http://localhost:8080
SELECT efelant.publish_status(
p_tenant_id => :tenant,
p_context_type => 'access_request',
p_external_id => 'AR-123',
p_status => 'approved'
);
curl http://localhost:18080/v1/contexts \
-H "Authorization: Bearer $TOKEN" \
-d '{"tenant_id":"…","type":"ticket","external_id":"T-1"}'
Why it looks like this
A strong focus on the database.
PostgreSQL is the API
Clients call stored functions. RLS owns authorization. Sync is conversation_id + last_sequence.
Embed, don’t remodel
Pass tenant_id + type + external_id. Status events can share the host transaction.
Comparison
Your Postgres. No broker in Core.
| Efelant | Redis pub/sub | Socket.IO | Stream / Pusher / Ably | Supabase Realtime | |
|---|---|---|---|---|---|
| Your PostgreSQL | Yes | No | No | No | Theirs, or you operate it |
| Authorization | RLS + functions | You build it | You build it | Vendor rules | RLS |
| Transactional status | publish_status in the same write |
No | No | No | You compose it |
| Broker in Core | No | Redis | Yes | Vendor | Realtime service |
| Catch-up | conversation_id + last_sequence |
Ephemeral | You build it | Vendor history | CDC / replay |
Fair reading: those tools are good at what they are. Efelant is for teams that already run PostgreSQL and want conversations next to that data.
Sync
LISTEN wakes. SQL catches up.
One core
Several product shapes.
Ticket embed
open_context on type + external_id. Embedding
Activity feed
Status and humans share one sequence. Use cases
Standalone DM
The Flutter app on the standalone tenant. Quickstart
Transactional status
efelant.publish_status commits with your UPDATE. Rollback hides the event.
REST & gRPC
PostgreSQL extensions. Same SQL. No FastAPI sidecar. Tokens scoped per tenant.
B2B tenants
Each org is a platform.tenants row. The Flutter app can set the host. It still cannot switch tenants.
Honest
Local preview is usable. B2B product is not finished.
Tenancy exists in SQL. The Flutter app can set the host. No tenant switcher, invites, or SSO. E2EE is a first step, not Signal. Self-host under AGPL. Hosted product and paid support are not offered yet — there is no cloud signup. Read readiness and security.
Honorable mention
Fireship
I replaced my entire tech stack with Postgres…
The case for keeping work in PostgreSQL. We built Efelant on that argument.