Tigris Data (@TigrisData) header
Tigris Data (@TigrisData) profile picture

Tigris is the storage layer for any cloud. Low latency & zero egress fees. Now with bucket forking.

San Francisco Bay Area
Joined March 2022
Photo by Tigris Data (@TigrisData)Photo by Tigris Data (@TigrisData)Photo by Tigris Data (@TigrisData)Photo by Tigris Data (@TigrisData)Photo by Tigris Data (@TigrisData)Photo by Tigris Data (@TigrisData)Photo by Tigris Data (@TigrisData)Photo by Tigris Data (@TigrisData)Photo by Tigris Data (@TigrisData)Photo by Tigris Data (@TigrisData)
๐Ÿš€ Dropbox plans to acquire Tigris, and everything you rely on today stays as it is: the product, the API, the pricing, the people. Even more storage, free to move to any cloud. Hereโ€™s what it means and what comes next: tigrisdata.com/blog/dropbox-โ€ฆ
4
6
6
46
5,926
One of the fun things about running FoundationDB in production is that when someone asks "what's hammering the cluster?", the answer is usually "give me a minute, I need to run a Python script."
1
3
563
FoundationDB has transaction profiling built in, but there's a catch: the data gets overwritten, and analyzing it is a manual process. If you weren't looking when something went wrong, good luck figuring out what happened.
1
3
282
The core parts of relational databases are transactions, tables, and indices. At Tigris we use a non-relational database (FoundationDB) but still have indices. How did we do it? We made our own!
1
1
492
Today we have a romp through database theory and how indices get implemented on top of FoundationDB so you can learn more about how the tools you use work. Enjoy!
1
1
342
Ram is inordinately expensive right now, so everything we can do to cut ram usage makes objgit better for everyone.
2
1
451
Look in the thread for the post because social networks punish you for having thread starting posts with links in them for some reason.
1
339
Hey all, we have more updates on objgit! Looks like it's taking off amidst other companies making git services for some reason. Again, really have to wonder what that's all about.
1
1
1
8
2,077
Either way, we don't want to build another git forge with objgit, we want to build a git *server*. The idea is that a git server that grows with you instead of you having to grow around it.
1
1
543
At Tigris we love databases, especially FoundationDB. FoundationDB is that: our foundation. It's the basis for everything we do, even our message queue. Turns out it's pretty great to do data and queueing in the same transaction!
1
8
1,180
Obviously when we needed a message queue we started by reading a paper by Apple about how they turned FoundationDB into what basically amounts to Kafka. This gives us reliable delivery and scheduling in the same lines of code because jobs identify by when they run.
1
3
765
If our objgit post was so good last time, where's objgit post 2? Today we have an update on the epic saga of Xe reinventing Git storage on top of object storage: making seek-native packfiles. What does this mean? Well, git is complicated. Huddle into this thread!
1
3
733
A terrible way to think about Git is that it tracks the changes made to an empty folder and through those changes you reconstruct the history of your application's source code.
1
1
377
"We didn't need a database" is normally the kind of catchy blogpost title that shows up months before "We migrated to Postgres". Our friend JP runs AmpBase, and his control plane sits directly on top of Tigris' object storage without a relational database under it.
1
3
562
When you're as experienced at running a database platform (w/ thousands of customers) like JP does, you start thinking about what you can strip away and still have the functionality of a database without having to run one.
1
243
Chicago says an object is deleted. Singapore says it exists. Who's right? FoundationDB uses a variant of Paxos for consensus within a cluster, but versionstamps don't compare across clusters. Since we run so many clusters all over the globe, we invented our own protocol for conflict resolution. Read how we did it and how we replicate metadata at scale ๐Ÿ‘‡
1
9
965
Walgit, from @tobi, is exactly what @martinkl was talking about with the classic line: "the log is the database, and everything else is cache or materialized views." In walgit, the git repository is a write-ahead log in a bucket, and the SoT is the log itself, and the machines running it are throwaway caches. well, if the log is the database and the database is just a cached view of replaying the log, then what is a git checkout but a cached view of replaying the commit history? What's cool is we did the same thing, a layer down, to build Tigris: the object store IS the log. Every put is a new immutable version, every delete a tombstone. We see WALs bolted-on to manage mutability, but when you make the log the source of truth, it inverts the model. A HN commenter called out how walgit's core idea is the same as objgit-- git built on top of Tigris-- and we think there's some form of convergent evolution here that shows it's the right direction to make the log the SoT. Give a couple of our blogs a read and see if you agree ๐Ÿ‘‡
2
1
8
1,217
An agent can run off a VM image that is larger than the disk it runs on. AgentENV by @KVCache_AI keeps microVM disk images in object storage and pulls down only the blocks each machine actually needs. That is how image size stops being limited by local disk. It also means the local disk is a cache with a size limit. Cold blocks get evicted, and when they are needed again they get fetched again. Every machine in the fleet does this independently, for as long as the cluster is running. Those reads never stop. With Tigris, they never cost egress either. Swapping in a different object store takes a few lines of config: kvcache-ai.github.io/AgentENโ€ฆ
1
704
๐—ช๐—ต๐˜† ๐—ฝ๐˜‚๐˜ ๐—ฎ๐—ด๐—ฒ๐—ป๐˜ ๐˜€๐—ฎ๐—ป๐—ฑ๐—ฏ๐—ผ๐˜… ๐˜€๐˜๐—ฎ๐˜๐—ฒ ๐—ถ๐—ป ๐—ผ๐—ฏ๐—ท๐—ฒ๐—ฐ๐˜ ๐˜€๐˜๐—ผ๐—ฟ๐—ฎ๐—ด๐—ฒ? For one sandbox on one machine, a host mount is fine. It starts to matter ๐˜„๐—ต๐—ฒ๐—ป ๐˜†๐—ผ๐˜‚ ๐—ฟ๐˜‚๐—ป ๐—ฎ ๐—ณ๐—น๐—ฒ๐—ฒ๐˜, where sandboxes are created and destroyed constantly and land on whichever node has room. Agent sandboxes are ephemeral on purpose. However, everything the agent produced dies unless it lived somewhere else. A bucket is reachable from every node. 1. With a volume plugin, ๐—ฐ๐—ฟ๐—ฒ๐—ฑ๐—ฒ๐—ป๐˜๐—ถ๐—ฎ๐—น๐˜€ ๐—ป๐—ฒ๐˜ƒ๐—ฒ๐—ฟ ๐—ฒ๐—ป๐˜๐—ฒ๐—ฟ ๐˜๐—ต๐—ฒ ๐˜€๐—ฎ๐—ป๐—ฑ๐—ฏ๐—ผ๐˜… and isolation is stronger. The keys stay in a root-owned config on the host and the microVM only ever sees a mounted filesystem. 2. Since mounts are reference-counted per node, ๐—ผ๐—ป๐—ฒ ๐—ฑ๐—ฎ๐˜๐—ฎ๐˜€๐—ฒ๐˜ ๐˜€๐—ฒ๐—ฟ๐˜ƒ๐—ฒ๐˜€ ๐—บ๐—ฎ๐—ป๐˜† ๐˜€๐—ฎ๐—ป๐—ฑ๐—ฏ๐—ผ๐˜…๐—ฒ๐˜€. Model weights mount read-only into every agent on a box from a single copy, instead of one pull per sandbox. Our S3 compatible backend is now in CubeSandbox -Tencent Cloud's open source microVM runtime for AI agents. Docs: cubesandbox.com/guide/integrโ€ฆ
2
395
How does Tigris work? What are the moving parts? Today we have a transcript of our CTO Himank's talk about how Tigris works at a high level and how FoundationDB makes it possible.
1
3
490
Delete doesn't have to mean the data is gone. Tigris lets you un-delete your most precious objects and buckets if you(r agent) didn't really mean to actually remove it for others.
1
1
1
475
Authentication seems simple. Signature-based authentication seems even more simple. Spoiler: it's not. Today Xe has a deep dive for us into how SigV4 authentication works at Tigris so that your apps, agents, and CLI tools all work the way they should. Link ๐Ÿ‘‡
๐Ÿค– Made with AI
1
493
Congrats to @skypilot_org on the Seed! We've been fans for a while, so we wanted to re-share our _thorough_ guide to launching a truly portable training job on Skypilot compute and Tigris storage. The guide teaches you to stream datasets bigger than RAM, shard into Tigris, pre-tokenize, train a LoRA โ€” every step idempotent because GPUs fail. ~15 min on a T4, same YAML anywhere Link ๐Ÿ‘‡
1
303
Our LangGraph checkpointer is now ๐—ผ๐—ณ๐—ณ๐—ถ๐—ฐ๐—ถ๐—ฎ๐—น๐—น๐˜† ๐—ถ๐—ป ๐˜๐—ต๐—ฒ @LangChain ๐—ฑ๐—ผ๐—ฐ๐˜€. docs.langchain.com/oss/pythoโ€ฆ If you build agents with LangGraph, the checkpointer is where your agent's past lives: ๐—ฒ๐˜ƒ๐—ฒ๐—ฟ๐˜† ๐˜๐—ต๐—ฟ๐—ฒ๐—ฎ๐—ฑ, ๐—ฒ๐˜ƒ๐—ฒ๐—ฟ๐˜† ๐—ฐ๐—ต๐—ฒ๐—ฐ๐—ธ๐—ฝ๐—ผ๐—ถ๐—ป๐˜, ๐—ฒ๐˜ƒ๐—ฒ๐—ฟ๐˜† ๐—ณ๐—ฎ๐—ฐ๐˜ ๐—ฎ ๐˜‚๐˜€๐—ฒ๐—ฟ ๐—ฒ๐˜ƒ๐—ฒ๐—ฟ ๐˜๐—ผ๐—น๐—ฑ ๐—ถ๐˜. Most teams keep that state in Postgres. But a database copies rows to branch, so cloning an agent costs more the more history it has. On Tigris Data, a fork is a pointer, not a copy. You can clone your entire agent, every thread and checkpoint, in constant time, whether it holds 1 MB or 1 TB. That's what lets you evaluate a prompt change against real user state instead of three blank fixtures: fork prod, replay real threads through the candidate, judge it against the baseline, drop the fork. Nothing touches live data. Full walkthrough: tigrisdata.com/blog/eval-ageโ€ฆ
417
If you use RAGFlow by @infiniflowai to answer questions from your documents, everything it knows lives in its storage backend. By default, if you use MiniIO, RAGFlow re-reads your corpus every time you tune it.ย  When you change your chunking or swap embedding models, every document gets pulled from storage again. If you point RAGFlow at a Tigris bucket - you can re-process your corpus as often as you want, for free. If you snapshot the bucket first, a bad re-parse becomes a rollback instead of a restore-from-backup. Full setup guide:ย tigrisdata.com/docs/guides/rโ€ฆ
1
205