{"slug": "relay", "name": "Relay", "category": "ai", "category_name": "AI models and assistants", "description": "", "recommenders": 6, "commenters": 7, "warners": 0, "score": 5.259, "rising": -1.96, "first": "2025-12-14", "latest": "2026-03-26", "why": "You should be using Relay[0] or Isograph[1] on the frontend", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 6, "neutral": 1, "compare": 0, "warn": 1}, "spark": [0, 2, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "You should be using Relay[0] or Isograph[1] on the frontend", "kind": "", "icon": true, "domain": "relay.md", "github_repo": null, "official_url": "https://relay.md", "pricing": "", "aliases": ["Relay"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 760466528, "item_id": 47529158, "url": "https://news.ycombinator.com/item?id=47529158", "by": "chrislxy", "date": "2026-03-26", "stance": "recommend", "quote": "A self-hosted OpenClaw instance (or other solutions in the future) with Relay would be a good alternative to Claude Cowork.", "excerpt": "Probably not the typical OpenClaw user. I\u2019ve had that thought myself. But I can imagine that medium-sized companies will want to use AI as a backend in the future, without wanting to be dependent on Antropic. After all, there are already quite a few companies using OpenClaw. A self-hosted OpenClaw instance (or other solutions in the future) with Relay would be a good alternative to Claude Cowork.", "context": "", "use_case": "", "switched_from": "", "story": "Show HN: Relay \u2013 The open-source Claude Cowork for OpenClaw"}, {"id": 755369952, "item_id": 47210622, "url": "https://news.ycombinator.com/item?id=47210622", "by": "chrisweekly", "date": "2026-03-01", "stance": "recommend", "quote": "I was also delighted to discover Relay", "excerpt": "\"obsidian shows them as markdown\" = try editor settings (\"Live Preview\") in terms of embedded vaults, I agree there should be better native support -- but I was also delighted to discover Relay (https://relay.md) which supports directory-level (not just vault-level) sync.", "context": "", "use_case": "directory-level note sync", "switched_from": "", "story": "Obsidian Sync now has a headless client"}, {"id": 755202320, "item_id": 47200145, "url": "https://news.ycombinator.com/item?id=47200145", "by": "chrisweekly", "date": "2026-02-28", "stance": "recommend", "quote": "lets you sync / share files based on directory (vs. the whole vault)", "excerpt": "Related tangent: \"Relay\" (https://relay.md\") lets you sync / share files based on directory (vs. the whole vault). That enables things like \"my private vault contains a subdir for work, and my work machine syncs to only that child subdir\".", "context": "", "use_case": "Directory-level file sync", "switched_from": "", "story": "Obsidian Sync now has a headless client"}, {"id": 747501024, "item_id": 46718814, "url": "https://news.ycombinator.com/item?id=46718814", "by": "rvillanueva", "date": "2026-01-22", "stance": "recommend", "quote": "Relay does a good job of automatically partitioning money", "excerpt": "Relay does a good job of automatically partitioning money, though you still need to manually execute external payments. Gives you a little extra interest on money allocated for taxes too https://relayfi.com/", "context": "", "use_case": "Automatic money partitioning", "switched_from": "", "story": "Ask HN: Does \"Zapier for payment automation\" exist?"}, {"id": 740331088, "item_id": 46270693, "url": "https://news.ycombinator.com/item?id=46270693", "by": "rbalicki", "date": "2025-12-14", "stance": "recommend", "quote": "There are lots of great reasons to adopt Relay!", "excerpt": "I may be wrong on the details, but with URQL: - you don't have a normalized cache. You may not want one! But if you find yourself annoyed that modifying one entity in one location doesn't automatically cause another view into that same entity to update, it's due to a lack of a normalized cache. And this is a more frequent problem than folks admit. You might go from a detail view to an edit view, modify a few things, ", "context": "", "use_case": "GraphQL client", "switched_from": "", "story": "GraphQL: The enterprise honeymoon is over"}]}], "caveats": [{"label": "", "summary": "", "quotes": [{"id": 740321648, "item_id": 46270103, "url": "https://news.ycombinator.com/item?id=46270103", "by": "rbalicki", "date": "2025-12-14", "stance": "warn", "quote": "I think this is one of the biggest misses in Relay", "excerpt": "100% agree on the unnecessary connection between entrypoints and meta internals. I think this is one of the biggest misses in Relay, and severely limits its usefulness in OSS. If you're interested in entrypoints without the Meta internals, you may be interested in checking out Isograph (which I work on). See e.g. https://isograph.dev/docs/loadable-fields/, where the data + JS for BlogBody is loaded afterward, i.e. en", "context": "", "use_case": "", "switched_from": "", "story": "GraphQL: The enterprise honeymoon is over"}]}], "who": [], "tags": [], "use_cases": ["directory-level note sync", "directory-level file sync", "automatic money partitioning", "graphql client", "graphql data fetching with react", "graphql frontend client"], "compared": [{"slug": "obsidian", "name": "Obsidian", "co": 3, "switched_from": 0, "switched_to": 0}, {"slug": "claude-code", "name": "Claude Code", "co": 3, "switched_from": 0, "switched_to": 0}, {"slug": "openclaw", "name": "OpenClaw", "co": 2, "switched_from": 0, "switched_to": 0}, {"slug": "codex", "name": "Codex", "co": 2, "switched_from": 0, "switched_to": 0}], "makers": [{"id": 802465490, "item_id": 50154093, "url": "https://news.ycombinator.com/item?id=50154093", "by": "pavelmelnichuk", "date": "2026-10-19", "stance": "recommend", "quote": "Shameless plug, I've been building Relay for this exact reason.", "excerpt": "Otel is only a quarter of what the llm proxies solve for you. What happens when an agent goes down some random rabbit hole and burns through $100 before you even notice? It's nice to have post-disaster visibility with Otel, but even self hosting an LLM proxy prevents the disaster. Shameless plug, I've been building Relay for this exact reason. You get real-time visibility into what your agents are doing, how much the", "context": "", "use_case": "LLM proxy and spend limits", "switched_from": "", "story": "If you don't run your own LLM proxy, how do you know whats going on?"}, {"id": 780230960, "item_id": 48764435, "url": "https://news.ycombinator.com/item?id=48764435", "by": "johnathan101", "date": "2026-07-02", "stance": "recommend", "quote": "i build a tool called relay", "excerpt": "basically it is not generic ai saas i build a tool called relay, so that teams can use ai agents safelt in productions , relay stops bad tool calls and prompt injections attack. try it here --https://relay-security-lemon.vercel.app/", "context": "", "use_case": "stopping bad AI tool calls", "switched_from": "", "story": "Ask HN: What are you working on? (July 2026)"}, {"id": 769791187, "item_id": 48111949, "url": "https://news.ycombinator.com/item?id=48111949", "by": "dtkav", "date": "2026-05-12", "stance": "neutral", "quote": "(I'm the developer of Relay / https://relay.md )", "excerpt": "IMO Obsidian is currently the king of \"personal software frameworks\". You can look at YT channels for inspiration of what other people are doing, but I'd avoid trying to copy someone else's setup (for the vague promise of productivity), and instead just start to tinker and tailor your environment to yourself. The base experience is really good. What matters most is that you spend time actually writing useful things d", "context": "", "use_case": "", "switched_from": "", "story": "The Future of Obsidian Plugins"}, {"id": 755568672, "item_id": 47223042, "url": "https://news.ycombinator.com/item?id=47223042", "by": "dtkav", "date": "2026-03-02", "stance": "neutral", "quote": "Note that you can self-host a Relay server and join it to our network.", "excerpt": "Hey, developer behind Relay here. Yes, our sync engine is home-grown. We use CRDTs to provide real-time google-docs-like collaboration which is not something Obsidian supports (yet... i think they are working on it). Note that you can self-host a Relay server and join it to our network. This gives you complete control over your data and unmetered storage. We do still charge for seats if you have more than 3 collabora", "context": "", "use_case": "Real-time Obsidian sync", "switched_from": "", "story": "Obsidian Sync now has a headless client"}, {"id": 754363040, "item_id": 47147690, "url": "https://news.ycombinator.com/item?id=47147690", "by": "sparkco123", "date": "2026-02-24", "stance": "recommend", "quote": "30\u201350% fewer tokens, context is always current.", "excerpt": "Built three tools while building our AI assistant (OpenClaw) \u2014 kept hitting the same walls with agent context. Relay: splits context into ephemeral (expires, re-fetch on startup) vs durable (stable, load directly). 30\u201350% fewer tokens, context is always current. Stitch: async agent messaging with no broker. One agent drops a note, another picks it up on next startup. Flat files, zero infra. PAG: entity graph with att", "context": "", "use_case": "", "switched_from": "", "story": "Agent context management: ephemeral vs. durable classification"}, {"id": 750489264, "item_id": 46905579, "url": "https://news.ycombinator.com/item?id=46905579", "by": "khaliqgant", "date": "2026-02-05", "stance": "recommend", "quote": "We've been building something in this space", "excerpt": "Been waiting for this to drop and excited to test it out. We've been building something in this space - https://github.com/AgentWorkforce/relay, a real-time messaging layer that lets AI coding agents talk to each other across any CLI. Assign roles to different models and have them coordinate: Claude as the lead, Codex on backend, Gemini on frontend, etc. I wrote about my experiences with multi-agent orchestration her", "context": "", "use_case": "Agent-to-agent messaging", "switched_from": "", "story": "Claude Code Agent Teams"}], "threads": [{"url": "https://news.ycombinator.com/item?id=46264704", "title": "GraphQL: The enterprise honeymoon is over", "mentions": 6}, {"url": "https://news.ycombinator.com/item?id=47197267", "title": "Obsidian Sync now has a headless client", "mentions": 3}, {"url": "https://news.ycombinator.com/item?id=50145507", "title": "If you don't run your own LLM proxy, how do you know whats going on?", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48762693", "title": "Ask HN: What are you working on? (July 2026)", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48109970", "title": "The Future of Obsidian Plugins", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=47528683", "title": "Show HN: Relay \u2013 The open-source Claude Cowork for OpenClaw", "mentions": 1}], "sentiment_by_month": {"2025-11": {}, "2025-12": {"recommend": 2, "warn": 1, "neutral": 1}, "2026-01": {"recommend": 1}, "2026-02": {"recommend": 1}, "2026-03": {"recommend": 2}, "2026-04": {}, "2026-05": {}, "2026-06": {}, "2026-07": {}, "2026-08": {}, "2026-09": {}, "2026-10": {}}, "quotes": [{"id": 760466528, "item_id": 47529158, "url": "https://news.ycombinator.com/item?id=47529158", "by": "chrislxy", "date": "2026-03-26", "stance": "recommend", "quote": "A self-hosted OpenClaw instance (or other solutions in the future) with Relay would be a good alternative to Claude Cowork.", "excerpt": "Probably not the typical OpenClaw user. I\u2019ve had that thought myself. But I can imagine that medium-sized companies will want to use AI as a backend in the future, without wanting to be dependent on Antropic. After all, there are already quite a few companies using OpenClaw. A self-hosted OpenClaw instance (or other solutions in the future) with Relay would be a good alternative to Claude Cowork.", "context": "", "use_case": "", "switched_from": "", "story": "Show HN: Relay \u2013 The open-source Claude Cowork for OpenClaw"}, {"id": 755369952, "item_id": 47210622, "url": "https://news.ycombinator.com/item?id=47210622", "by": "chrisweekly", "date": "2026-03-01", "stance": "recommend", "quote": "I was also delighted to discover Relay", "excerpt": "\"obsidian shows them as markdown\" = try editor settings (\"Live Preview\") in terms of embedded vaults, I agree there should be better native support -- but I was also delighted to discover Relay (https://relay.md) which supports directory-level (not just vault-level) sync.", "context": "", "use_case": "directory-level note sync", "switched_from": "", "story": "Obsidian Sync now has a headless client"}, {"id": 755202320, "item_id": 47200145, "url": "https://news.ycombinator.com/item?id=47200145", "by": "chrisweekly", "date": "2026-02-28", "stance": "recommend", "quote": "lets you sync / share files based on directory (vs. the whole vault)", "excerpt": "Related tangent: \"Relay\" (https://relay.md\") lets you sync / share files based on directory (vs. the whole vault). That enables things like \"my private vault contains a subdir for work, and my work machine syncs to only that child subdir\".", "context": "", "use_case": "Directory-level file sync", "switched_from": "", "story": "Obsidian Sync now has a headless client"}, {"id": 747501024, "item_id": 46718814, "url": "https://news.ycombinator.com/item?id=46718814", "by": "rvillanueva", "date": "2026-01-22", "stance": "recommend", "quote": "Relay does a good job of automatically partitioning money", "excerpt": "Relay does a good job of automatically partitioning money, though you still need to manually execute external payments. Gives you a little extra interest on money allocated for taxes too https://relayfi.com/", "context": "", "use_case": "Automatic money partitioning", "switched_from": "", "story": "Ask HN: Does \"Zapier for payment automation\" exist?"}, {"id": 741831681, "item_id": 46364480, "url": "https://news.ycombinator.com/item?id=46364480", "by": "Already__Taken", "date": "2025-12-23", "stance": "neutral", "quote": "", "excerpt": "Reminds me a lot of Grafast too, a new stab at this the people that made postgraphile had. I liked using graphile, haven't needed to rewrite or start a new project yet for grafast. * https://grafast.org/", "context": "", "use_case": "", "switched_from": "", "story": "GraphQL: The enterprise honeymoon is over"}, {"id": 740331088, "item_id": 46270693, "url": "https://news.ycombinator.com/item?id=46270693", "by": "rbalicki", "date": "2025-12-14", "stance": "recommend", "quote": "There are lots of great reasons to adopt Relay!", "excerpt": "I may be wrong on the details, but with URQL: - you don't have a normalized cache. You may not want one! But if you find yourself annoyed that modifying one entity in one location doesn't automatically cause another view into that same entity to update, it's due to a lack of a normalized cache. And this is a more frequent problem than folks admit. You might go from a detail view to an edit view, modify a few things, ", "context": "", "use_case": "GraphQL client", "switched_from": "", "story": "GraphQL: The enterprise honeymoon is over"}, {"id": 740330225, "item_id": 46270639, "url": "https://news.ycombinator.com/item?id=46270639", "by": "rbalicki", "date": "2025-12-14", "stance": "neutral", "quote": "JS and fragments are statically associated in Relay", "excerpt": "Yeah, you can get a lot of features out of the same primitive. The primitive (called loadable fields, but you can think of it as a tool to specify a section of a query as loaded later) allows you to support: - live queries (call the loadable field in a setInterval) - pagination (pass different variables and concatenate the result) - defer - loading data in response to a click And if you also combine this with the fac", "context": "", "use_case": "", "switched_from": "", "story": "GraphQL: The enterprise honeymoon is over"}, {"id": 740321648, "item_id": 46270103, "url": "https://news.ycombinator.com/item?id=46270103", "by": "rbalicki", "date": "2025-12-14", "stance": "warn", "quote": "I think this is one of the biggest misses in Relay", "excerpt": "100% agree on the unnecessary connection between entrypoints and meta internals. I think this is one of the biggest misses in Relay, and severely limits its usefulness in OSS. If you're interested in entrypoints without the Meta internals, you may be interested in checking out Isograph (which I work on). See e.g. https://isograph.dev/docs/loadable-fields/, where the data + JS for BlogBody is loaded afterward, i.e. en", "context": "", "use_case": "", "switched_from": "", "story": "GraphQL: The enterprise honeymoon is over"}, {"id": 740270129, "item_id": 46266883, "url": "https://news.ycombinator.com/item?id=46266883", "by": "andrewingram", "date": "2025-12-14", "stance": "recommend", "quote": "I use GraphQL because I really want to use Relay.", "excerpt": "As someone who\u2019s used GraphQL since mid-2015, if you haven\u2019t used GraphQL with Relay you probably haven\u2019t experienced GraphQL in a way that truly exploits its strengths. I say probably because in the last ~year Apollo shipped functionality (fragment masking) that brings it closer. I stand by my oft-repeated statement that I don\u2019t use Relay because I need a React GraphQL client, I use GraphQL because I really want to ", "context": "", "use_case": "GraphQL data fetching with React", "switched_from": "", "story": "GraphQL: The enterprise honeymoon is over"}, {"id": 740261152, "item_id": 46266322, "url": "https://news.ycombinator.com/item?id=46266322", "by": "akio", "date": "2025-12-14", "stance": "recommend", "quote": "You should be using Relay[0] or Isograph[1] on the frontend", "excerpt": "If all your experience comes from Apollo Client and Apollo Server, as the author's does, then your opinion is more about Apollo than it is about GraphQL. You should be using Relay[0] or Isograph[1] on the frontend, and Pothos[2] on the backend (if using Node), to truly experience the benefits of GraphQL. [0]: https://relay.dev/ [1]: https://isograph.dev/ [2]: https://pothos-graphql.dev/", "context": "", "use_case": "GraphQL frontend client", "switched_from": "", "story": "GraphQL: The enterprise honeymoon is over"}]}