Filesystem is best when there is a single writer and many readers.
If you have bunch of files and don't have any structure, yes filesystem is great but the moment when you need consistency & performance (which you need sooner rather than later) use databases.
Investing early doesn't hurt when you build a product that you know will have many writers.
It's not built on OpenClaw, it uses Pi the harness that powers OpenClaw. We were using the GTM for multi-tenant OpenClaw when there was hype but quickly moved away from it as OpenClaw is a nightmare in terms of security.
It's interesting to hear that 60% of PRs at Anthropic is created by the Slack bot. While building a Slack bot is easy, making it look like an AI teammate is pretty hard. This is exactly the gap we’re working on with Lobu.ai — disclosure: I’m the founder.
The hard problem is giving a shared agent durable organizational memory and a real isolated environment where it can safely access company systems and perform work. The agents need a durable log of what everybody at the company is doing, prevent data leaks with proper access control and isolate the runtime to give everybody both private & shared space.
It’s also not tied to Claude or Slack. We see Slack as one interface and the models as part of the harness. It's usually better to combine multiple providers to review the work.
Most SaaS stacks are a collection of vertical tools that each own one piece of the business but don’t really share memory or context with each other.
I wrote a post arguing that agent loops are becoming the better model. The thing is, a lot of “agent + cron job” setups today are basically doing what traditional SaaS already does — reacting to one event without much broader context. The loop approach only really starts to pull ahead when memory is persistent and shared across different parts of the business.
Materialized tables are useful for time-series or sharding-like use-cases. You essentially offload the work to INSERT time to locate the data into relevant buckets/sub-tables that you can DROP later.
We use materialized views for append-only timeseries data for https://lobu.ai and the retention policies define how we DROP the tables so we don't DELETE/UPDATE any rows in the tables.
The long term storage is Iceberg on S3 that's ingested via Postgresql replication, suitable for OLAP use-cases. Postgresql only stores the dimensional OLTP data the users can update and the hot append-only event data.
Looks interesting! It reminds me of pg_lake, which we evaluated for our startup https://lobu.ai but it's missing a lot of pushdown capabilities which made OLAP queries expensive.
I also tried DuckLake but that required us to move away from PG-first approach. I was thinking of using Debezium to create Iceberg on S3 for our append-only PG tables and use DuckDB. I will try Streambed out as well!
Ahh, sorry about that. It should be fixed in an hour, looks like we mixed the permissions. I just tried and confirmed other login methods work if you would like to try out.
The native extensions are fine but I don't have good experience with any third party extensions, so far tried Timescale, pg_lake, citus, and pgvectorscale. They look very appealing but it's usually a trap as you can't get the value without using the vendor's cloud offerings.
I think if you grow enough to look for these extensions, it's usually better to bet on purpose-specific tooling. For example, I use DuckDB/Iceberg combination extensively for columnar data and connect DuckDB to PG when I need it.
All you need is Postgres until you scale into TBs of data. We use Postgresql as a durable workflow engine, vector search, time-series data, BM25 search, OLTP/OLAP engine, and a queue. It's basically the only dependency we have for https://lobu.ai
The main benefit is centralizing all the data in one place so we don't need to worry about copying data in between multiple systems. Once something becomes the bottleneck, you can eventually migrate to a purpose specific tool to scale out.To be honest, LISTEN/NOTIFY in my opinion is the most fragile part of PG but it's fine as start until you scale out.
Yes that's it. I actually just ask codex/claude code to look up the session id when I want to resume sessions cross harness, it's just jsonl files locally so it can access the full conversation history when needed.
I'm working on multi-tenant version of OpenClaw for organizations that has shared memory layer. It includes an entity based agent context layer that can be used as OpenClaw plugin and a sandbox runtime layer which uses just-bash with pi and let you expose the context via a bot an API.