frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

PuTTY has a new website

https://putty.software/
101•GalaxySnail•2h ago•60 comments

The future of large files in Git is Git

https://tylercipriani.com/blog/2025/08/15/git-lfs/
295•thcipriani•10h ago•118 comments

AI is different

https://www.antirez.com/news/155
176•grep_it•2d ago•167 comments

Best Practices for Building Agentic AI Systems

https://userjot.com/blog/best-practices-building-agentic-ai-systems
85•vinhnx•3h ago•43 comments

I accidentally became PureGym’s unofficial Apple Wallet developer

https://drobinin.com/posts/how-i-accidentally-became-puregyms-unofficial-apple-wallet-developer/
263•valzevul•19h ago•53 comments

Show HN: Edka – Kubernetes clusters on your own Hetzner account

https://edka.io
300•camil•12h ago•93 comments

Occult books digitized and put online by Amsterdam’s Ritman Library

https://www.openculture.com/2025/08/2178-occult-books-now-digitized-put-online.html
370•Anon84•14h ago•142 comments

Do Things That Don't Scale (2013)

https://paulgraham.com/ds.html
297•bschne•15h ago•93 comments

Deep-Sea Desalination Pulls Fresh Water from the Depths

https://www.scientificamerican.com/article/deep-sea-desalination-pulls-drinking-water-from-the-depths/
24•noleary•3d ago•2 comments

OpenBSD is so fast, I had to modify the program slightly to measure itself

https://flak.tedunangst.com/post/is-OpenBSD-10x-faster-than-Linux
151•Bogdanp•11h ago•111 comments

ADHD drug treatment and risk of negative events and outcomes

https://www.bmj.com/content/390/bmj-2024-083658
216•bookofjoe•15h ago•262 comments

Prompting by Activation Maximization

https://joecooper.me/blog/activation/
4•thatjoeoverthr•2d ago•0 comments

Launch HN: Embedder (YC S25) – Claude code for embedded software

85•bobwei1•12h ago•38 comments

The electric fence stopped working years ago

https://soonly.com/electric-fences/
195•stroz•14h ago•84 comments

Porting Gigabyte MZ33-AR1 Server Board with AMD Turin CPU to Coreboot

https://blog.3mdeb.com/2025/2025-08-07-gigabyte_mz33_ar1_part1/
61•pietrushnic•9h ago•0 comments

TextKit 2 – The Promised Land

https://blog.krzyzanowskim.com/2025/08/14/textkit-2-the-promised-land/
63•nickmain•8h ago•21 comments

Show HN: Prime Number Grid Visualizer

https://enda.sh/primegrid/
81•dduplex•2d ago•38 comments

A privacy VPN you can verify

https://vp.net/l/en-US/blog/Don%27t-Trust-Verify
68•MagicalTux•7h ago•61 comments

Model intelligence is no longer the constraint for automation

https://latentintent.substack.com/p/model-intelligence-is-no-longer-the
50•drivian•15h ago•56 comments

A mind–reading brain implant that comes with password protection

https://www.nature.com/articles/d41586-025-02589-5
37•gnabgib•1d ago•18 comments

Recto – A Truly 2D Language

https://masatohagiwara.net/recto.html
102•mhagiwara•3d ago•49 comments

ARM adds neural accelerators to GPUs

https://newsroom.arm.com/news/arm-announces-arm-neural-technology
148•dagmx•3d ago•29 comments

Bullfrog in the Dungeon

https://www.filfre.net/2025/08/bullfrog-in-the-dungeon/
110•doppp•14h ago•26 comments

Compiler Bug Causes Compiler Bug: How a 12-Year-Old G++ Bug Took Down Solidity

https://osec.io/blog/2025-08-11-compiler-bug-causes-compiler-bug/
124•luu•4d ago•62 comments

Claude Opus 4 and 4.1 can now end a rare subset of conversations

https://www.anthropic.com/research/end-subset-conversations
208•virgildotcodes•10h ago•292 comments

Vaultwarden commit introduces SSO using OpenID Connect

https://github.com/dani-garcia/vaultwarden/pull/3899
160•speckx•17h ago•85 comments

America's Stock-Market Dominance Is an Emergency for Europe

https://www.wsj.com/finance/investing/americas-stock-market-dominance-is-an-emergency-for-europe-627b3221
12•mudil•1h ago•1 comments

Open hardware desktop 3D printing is dead?

https://www.josefprusa.com/articles/open-hardware-in-3d-printing-is-dead/
645•rcarmo•17h ago•393 comments

Is air travel getting worse?

https://www.maximum-progress.com/p/is-air-travel-getting-worse
126•mhb•17h ago•209 comments

Thai Air Force seals deal for Swedish Gripen jets

https://www.scmp.com/news/asia/southeast-asia/article/3320828/us-f-16s-lose-out-thai-air-force-seals-us600-million-deal-swedish-gripen-jets
146•belter•9h ago•192 comments
Open in hackernews

Show HN: Vaultrice – A real-time key-value store with a localStorage API

https://www.vaultrice.com/
35•adrai•2d ago
Hi HN,

I'm Adriano, one of the makers of Vaultrice. I'm excited (and a little nervous!) to share what we've been building.

For years, we found ourselves in a frustrating loop: whenever we needed a simple real-time feature—like a "who's online" list, a collaborative app, or just sharing state between a marketing site and our main app — we'd end up spending days setting up the same stack or discarded to do it. Setting it up, it always involved wiring together a database, a WebSocket server, an API, and managing the connection state. It felt like massive overkill for what we were trying to achieve.

We wanted a tool that felt as simple to use as the browser's `localStorage` API but worked across domains and devices, with real-time sync and security built-in.

So, we built Vaultrice.

It’s a key-value data store built on top of Cloudflare's Durable Objects, which gives you a strongly consistent backend for each data object. You interact with it through our TS/JS SDK, which comes in two flavors:

1. `NonLocalStorage`: A low-level client with a `localStorage`-like API (`setItem`, `getItem`, etc.) plus real-time events and presence (`.on()`, `.join()`).

2. `SyncObject`: A higher-level, reactive JavaScript Proxy. You just change a property on an object (`doc.title = 'New Title'`), and it automatically syncs to all other connected clients.

The goal is to let you build the real-time features you want in minutes, not days. We've also put a lot of thought into a layered security model, allowing you to go from simple API key restrictions all the way to server-signed object IDs and client-side E2EE.

We’ve just launched and would be grateful for any feedback from the HN community. What do you think of the API design? Are there use cases we haven't considered? Any thoughts on the security model?

We'll be here (or via email (support@vaultrice.com)) to answer any questions. Thanks for checking it out!

Comments

taherchhabra•1d ago
Just yesterday my son built a zombie shooter game in chatgpt, then shared the link with his friend, both were able to play individually, then my son asked can we play together and shoot each other. I was wondering is there something like localstorage but for network which chatgpt can easily use it. Can this work for my son's use case?
adrai•1d ago
Yes — that’s exactly the kind of thing Vaultrice is designed for.

Think of it like localStorage, but instead of being tied to one browser on one device, the data lives in a globally-available, real-time object. Any change one player makes (like moving their character or firing a shot) can be sent instantly to the other player’s browser — without having to set up your own server or WebSocket layer.

For your son’s zombie shooter: • Each game session could be one Vaultrice “object” (with an id like game-123). • Each player writes their position, health, actions to that object. • The other player’s browser listens for changes and updates the game state instantly. • Presence tracking is built-in, so you can show “who’s in the game” without extra code.

The nice part is that the SDK’s API feels familiar — setItem, getItem, and on() for events — so you can get a working multiplayer prototype with just a few lines. If you want even less boilerplate, the SyncObject API lets you just set properties on a shared object and Vaultrice syncs it behind the scenes.

It won’t handle game physics for you, but it’s a fast, simple way to make a turn-based or moderately real-time multiplayer experience without hosting your own backend.

Gys•1d ago
The two players would be two users?
adrai•1d ago
Don't know exactly what you mean by users... users in the Game... probably yes. users in Vaultrice... no, in Vaultrice that would be 1 object (per game) of 1 class
Gys•1d ago
I meant for Vaultrice. From your pricing page it is not clear what counts as a user. I guess I am confused by clients vs users.
RestartKernel•1d ago
I love the API, but it's a tough sell as a SaaS first — who knows if you'll still be around after I've built my infra around your SDK?
adrai•1d ago
The team behind vaultrice.com is the same team behind locize.com and i18next.com...
adrai•1d ago
and as long as it's used on those and other apps, it will for sure continue to exist ;-)
santa_boy•1d ago
Yet to explore but just reading few snippets ... is this good for offline first apps?

If not, any others you recommend for that use-case?

If yet, is this ready enough for production use?

adrai•1d ago
Hey, thanks for the great questions!

Offline-first: That's a key distinction. The Vaultrice SDK is currently designed for "online-first" and "offline-sometimes" use cases. Its main strength is real-time, consistent synchronization that relies on an active connection.

Proper offline-first support with automatic conflict resolution is on our roadmap, as we have a backlog item for it ;-) However, you can easily achieve a robust offline capability in your own code today by using localStorage as a fallback.

Here’s a simple wrapper pattern (not tested, just for illustration) that reads from Vaultrice when online and falls back to a local cache when offline:

import { NonLocalStorage } from '@vaultrice/sdk';

// --- A simple offline-first wrapper --- function createOfflineStore(credentials, id) { const vaultriceStore = new NonLocalStorage(credentials, id); const localCacheKey = `vaultrice_cache_${id}`;

  // Helper to get local data
  const getLocal = () => JSON.parse(localStorage.getItem(localCacheKey) || '{}');

  return {
    // SET: Write to both Vaultrice (if online) and localStorage
    async setItem(key, value) {
      // Always update the local cache immediately
      const localData = getLocal();
      localData[key] = value;
      localStorage.setItem(localCacheKey, JSON.stringify(localData));

      try {
        // Attempt to write to the cloud
        await vaultriceStore.setItem(key, value);
      } catch (error) {
        console.warn('Offline: Data saved locally.', error.message);
      }
    },

    // GET: Try Vaultrice first, fallback to localStorage
    async getItem(key) {
      try {
        const item = await vaultriceStore.getItem(key);
        if (item) {
            // Optional: Update local cache with fresh data
            const localData = getLocal();
            localData[key] = item.value;
            localStorage.setItem(localCacheKey, JSON.stringify(localData));
            return item.value;
        }
      } catch (error) {
        console.warn('Offline: Reading from local cache.', error.message);
      }
      // Fallback to local cache
      return getLocal()[key];
    }
  };
}

Production Readiness: Yes, for its intended use case, Vaultrice is ready for production. We've put a lot of focus on a layered security model (from API key restrictions to E2EE) and built it on top of Cloudflare's infrastructure, which gives us a reliable and scalable foundation.

Hope that helps clarify things! Appreciate you checking it out.

djfobbz•1d ago
I thought you could easily achieve this (a global real-time object) with convex.dev?
adrai•1d ago
The team at Convex is building an awesome product. You're right that you can absolutely achieve real-time functionality with Convex, but we think about the problem with a different philosophy and focus.

The way we see it, it comes down to the level of abstraction and what problem you're trying to solve:

Convex is a powerful, full-featured backend platform. It gives you a database, serverless functions (mutations and queries), and file storage. It's a fantastic choice if you're looking to build your entire backend on a modern, reactive stack. You write your logic in server-side functions, and Convex provides the infrastructure.

Vaultrice aims to be a simpler, more focused real-time component that often requires no backend code from you at all. Our goal is to feel like a frontend tool—like a "cloud-based localStorage".

The key difference is in the developer experience:

With Vaultrice, for things like cross-domain state sharing or a simple "who's online" list, you just instantiate our SDK on the client with your credentials and start using it. There are no backend functions to write. Our SyncObject API, where you just modify a JavaScript object and it syncs, is designed to completely abstract away the server.

So, a good way to think about it might be:

Choose Convex when: You need a complete backend replacement, with server-side logic, schema validation, and complex queries.

Choose Vaultrice when: You already have a backend (or don't want one for this feature) and you just need to drop in a real-time, cross-domain state layer with a dead-simple, frontend-friendly API.

jamwt•1d ago
Makes sense to me