HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
theronic
eacl
Clojure2020–2026
theronic / eacl

eacl

🦅 EACL: Enterprise Access ControL is a ReBAC Authorization library inspired by SpiceDB, built in Clojure and backed by Datomic Pro, Datahike, Datalevin or DataScript.

2Distinct people
11Mentions
0Explicit recommenders
98GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

🦅 EACL: Enterprise Access ControL is a ReBAC Authorization library inspired by SpiceDB, built in Clojure and backed by Datomic Pro, Datahike, Datalevin or DataScript.

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year11 dated mentions

Observed mentions: 2020-07-25 23:40:48 UTC to 2026-09-15 14:09:39 UTC.

012342020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments20202021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments20232024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 4 mentions; 1 submissions, 3 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 3 mentions; 1 submissions, 2 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC202
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC202
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC000
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC000
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC000
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC413
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC312

What Hacker News says

11 sources
pgt·Sep 15, 2026Submission

Show HN: EACL is a situated ReBAC authorization library for Datomic and Datahike

EACL is a situated ReBAC authorization library inspired by SpiceDB & Google Zanzibar, built in Clojure and backed by Datomic Pro, Datahike, Datalevin or DataScript. EACL is suitable for multi-Peer deployments. I have been working on EACL for ~2 years in my personal capacity and I use it in all my Clojure projects now. - You can try the EACL performance demo: https://demo.eacl.dev/ - And play with EACL Drive, a toy clone of Google Drive: https://drive.eacl.dev/ (runs in-browser on DataScript) EACL can efficiently answer questions like: - "Does <subject> have <permission> on <resource>?" via `eacl/can?` or `eacl/check-permission` - "Which <resources> does <subject> have <permission> for?" via `eacl/lookup-resources` - "Which <subjects> have <permission> on <resource>?" via `eacl/lookup-subjects` EACL supports four Consistency Modes that map
Read the rest
to SpiceDB's consistency semantics, so you can run these queries against the database as-of now, or <N seconds ago> via `at-least-as-fresh` semantics for better cache reuse. SpiceDB is the most faithful open-source implementation of Google Zanzibar, and is used OpenAI, Reddit and Netflix. Zanzibar powers Google Drive, YouTube, Gmail and Google Calendar, serving billions of authorization requests per day over billions of Relationships. "Situated" here means that permission data co-exist with your application data. This has several advantages over external AuthZ: - Reduced network latency (no network hop to external system), - Strong local consistency, - Scale reads by scaling Peers horizontally, and - Real-time UI view maintenance – tail the tx-log and run `eacl/lookup-subjects` for changed permissioned entities and notify online users of novelty, instead of polling or re-querying for all online users. Rationale: I spent the better half of 2024 integrating with SpiceDB at a former employer. SpiceDB is great, but it becomes non-trivial to keep an external authorization system in-sync, especially when there is an impedance mismatch between your data and SpiceDB’s 3-tuple Relationship schema. Plus, you also have to deal with eventual consistency. So, you change your data model to match the Spice schema to make syncing easier. Now you can tail the transactor log via `d/listener` and write Relationship changes 1-for-1. But once you do that, you might as well run your permission queries in your application and then you have one less system to deal with...and this is exactly what EACL does. You still retain the option to migrate to SpiceDB later. EACL is aimed at a different scale from SpiceDB: Spice is benchmarked against 100B Relationships. EACL aims for ~1-100M Relationships in a situated environment, but there is no reason it won't scale further if you scale out Peers. EACL is open-source under EPL 2.0.
6 points · Open discussion
https://github.com/theronic/eacl – EACL: Enterprise Access ControL is a situated ReBAC authorization library inspired by SpiceDB, built in Clojure and backed by Datomic Pro, Datahike, Datalevin or DataScript. "Situated" here means that permissions are just data that co-exist with your application data. This has several advantages: reduced network latency, strong local consistency and opportunities for real-time view maintenance. - EACL Performance Demo: https://demo.eacl.dev/ (1M permissioned entities, 3.8M Relationships) - A toy Google Drive clone (runs in-browser): https://drive.eacl.dev/ (4-minute screen recording here: https://x.com/BraaiEngineer/status/2099284919532896675?s=20) - Rationale: https://eacl.dev/#rationale EACL V8 RC was released to Clojars on 12 September 2026: https://clojars.org/dev.eacl/eacl EACL handles authorization
Read the rest
In Ask HN: What are you working on? (September 2026)
EACL: Enterprise Access ControL is a situated ReBAC Authorization system based on SpiceDB, built in Clojure and backed by Datomic – https://github.com/theronic/eacl 'Situated' here means that your permission schema & permission data live with your data, which has a number of benefits: - one less network hop, so can be faster than Spice for typical workloads, - one less distributed consistency & syncing problem, - one less component to run in prod with full consistency, - potential to implement ZedToken / Zookies via Datomix txid, and - easy to test new schemas with in-memory Datomic. EACL is plenty fast without a cache since horizontally-scalable Datomic Peers already cache datoms aggressively, but there is another 10-100x improvement in the pipeline. EACL is especially suitable to real-time multiplayer apps built in frameworks like Elect
Read the rest
ric Clojure. IMHO, EACL is currently the best-in-class authorization library in the Clojure ecosystem and is improving every week. ReBAC subsumes both ABAC & RBAC. I recently applied for Clojurists Together funding to improve cursors for intermediate resource traversal, which is the primary perf. bottleneck. EACL was not "vibecoded" as all tests were written by me and all code is human-reviewed, but EACL would not be possible for a single engineer to build mainly in his spare time without AI assistance. Docs with rationale: https://eacl.dev/
In Ask HN: What are you working on? (February 2026)
I'm working on EACL: http://github.com/theronic/eacl EACL (Enterprise Access ControL) is a situated ReBAC authorization library based on SpiceDB, built in Clojure and backed by Datomic. EACL queries offer sub-millisecond query times and has replaced SpiceDB at work (CloudAfrica). 'Situated' here means that your permissions live _next_ to your data in Datomic, which avoids a network hop and avoids syncing to an external AuthZ system like SpiceDB, so all queries are fully consistent. EACL is fast for typical workloads and is benchmarked against 800k permissioned entities. Once you need more scale or consistency semantics, you can sync your relationships from Datomic to SpiceDB 1-for-1 in near real-time because there is no impedance mismatch between EACL & SpiceDB. Read the rationale for EACL here: https://eacl.dev/#why-was-eacl-built-the-pr
Read the rest
oblem-with-extern... IMO, if you need fine-grained permissions, EACL is currently best-in-class for the Clojure ecosystem. EACL is especially suited to Electric Clojure applications and can be used to populate menus in real-time. EACL would not have been possible to build solo in my spare time without modern AI models to rapidly implement specifications and test against human-written tests. Here is a ~7-minute screen recording of EACL used from an Electric Clojure application for real-time ReBAC queries: https://x.com/PetrusTheron/status/1996344248925294773
In Ask HN: What Are You Working On? (December 2025)
pgt·Aug 5, 2025Submission

Show HN: EACL – ReBAC Authorization in Clojure and Datomic Based on SpiceDB

Hi HN, Petrus here from Cape Town, South Africa. I spent the better half of 2024 integrating our Clojure-based cloud provisioning platform at CloudAfrica[^1] with SpiceDB[^2], a scalable ReBAC based authorization system based on Zanzibar, Google's globally-consistent authorization system. The problem with any external authorization system is modelling & synchronization: SpiceDB has a text-based schema DSL to define Relations & Permissions and models Relationships as 3-tuples of `[subject relation resource]`. However, in Datomic we have attributes like `:account/owner`, `:server/account`, `:vpc/account` and `:vpc/viewers`. Figuring out which Relationships to create or delete in SpiceDB when anything changes becomes a diffing + batched sync problem, especially when you have an impedance mismatch between your data model and your permission s
Read the rest
chema. I realized that if we modelled our AuthZ Relationships directly in Datomic, all our syncing problems would go away: you can simply tail the Datomic transactor queue and instantly create or delete Spice relationships in real-time. But once you do that, you might as well model the permission schema as well, and if you go one step further, you can implement the permission graph traversal directly in Clojure to avoid a network hop. And that is exactly what EACL is. EACL (Enterprise Access ControL) is an embedded authorization library that lives next to your data in Datomic and avoids an external network hop. EACL is suitable for small-to-medium scale, while giving you the option to migrate to SpiceDB in future when you need more scale and consistency semantics. EACL implements the SpiceDB gRPC API as an idiomatic Clojure protocol (`IAuthorization`), using Datomic as a backing graph store. So you can add sophisticated authorization to your Clojure project on day one and migrate to SpiceDB later. Internally, EACL recursively traverses the permission graph using direct index-based calls (via `datomic.api/index-range`) to efficiently answer `CheckPermission`, `LookupSubjects` and `LookupResources` queries. The goal for EACL is to provide best-in-class authorization for Clojure & Datomic applications with <10M entities. It is especially suited to Electric Clojure[^3]. EACL has been open-sourced under the AGPL, but we are likely to relicense it under a more permissive licence. EACL is used at CloudAfrica, a regional cloud host based in South Africa. [^1]: https://cloudafrica.net [^2]: https://authzed.com/spicedb [^3]: https://electric.hyperfiddle.net/
4 points · Open discussion
Authentication is a solved problem; authorization is not. External authentication makes your system brittle, so I'm glad to see you can self-host SuperTokens for free. I've been working on Enterprise Access Control (EACL) in my spare time, an embedded Datalog-based library with a uniform declarative Clojure API that lets you write grant/deny ACL rules in the shape: Who, What, Why, When, Where & How that goes a little further than Role & Attribute. Link: https://github.com/theronic/eacl Will do a Show HN when I fix all the bugs and get it fast enough. Tokens are an interesting approach to future-proof a young application against having to rebuild auth internally. I like your up-front Pricing Philosophy section.
In Sick of spending time on Auth, we built an open source 'Stripe for Auth'
Interesting, honestly speaking we have not thought about time series data a lot yet, but I think we should be able to provide custom indices and extend Datalog with more efficient query primitives, if this is necessary. Can you elaborate a bit? I have used HDF5 binary blobs for tensors of experimental recordings (parameter evolution in spiking neural networks) in Datomic a few years ago and it is definitely possible to integrate external index data structures, but eventually the query engine will need to be aware of how to join them efficiently. W.r.t. security, our current approach is to shard access rights and encryption on a database level and just provide many databases, one for each user. This is obviously not the most space efficient, but the most general approach. If users can share access keys and data we can also do structural sh
Read the rest
aring between these instances and factorize further. We envision doing joins potentially over dozens of distributed Datahike instances in a global address space during single queries. Since the indices are amortized data structures it does not make too much sense to encrypt chunks of them for different users as this defeats the optimality guarantees of B+-trees, i.e. you could have very bad scan behaviour over huge ranges of encrypted Datoms. How have you tried to partition the data? This is an interesting problem. We can also expose the datahike-server query endpoint directly and you can write static checks for access right restrictions. We only do this so far to limit the usage of builtin functions to safe ones, but you could also go ahead and do the same for more complex access controls. Some work in this direction for Datahike has also been done here: https://github.com/theronic/eacl Doing this openly on the internet will also require a resource model to fend of denial of service attacks, fortunately Datalog engines can have powerful query planners and we can restrict our runtime to limited budgets as well.
In Datahike: Durable Datalog database powered by an efficient Datalog query engine

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.