TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Show HN: Streamdal – an open-source tail -f for your data

148 pointsby dsiesover 1 year ago
Hey there! This is Dan and Ustin (@uzarubin), and we want to share something cool we&#x27;ve been working on for the past year - an open-source <i>`tail -f`</i> for your data, with a UI. We call it <i>&quot;Streamdal&quot;</i> which is a word salad for streaming systems (because we love them) and DAL or data access layer (because we’re nerds).<p>Here&#x27;s the repo: <a href="https:&#x2F;&#x2F;github.com&#x2F;streamdal&#x2F;streamdal">https:&#x2F;&#x2F;github.com&#x2F;streamdal&#x2F;streamdal</a><p>Here&#x27;s the site: <a href="https:&#x2F;&#x2F;streamdal.com">https:&#x2F;&#x2F;streamdal.com</a><p>And here&#x27;s a live demo: <a href="https:&#x2F;&#x2F;demo.streamdal.com">https:&#x2F;&#x2F;demo.streamdal.com</a> (github repo has an explanation of the demo)<p>— — —<p>THE PROBLEM<p>We built this because the current observability tooling is not able to provide real-time insight into the actual data that your software is reading or writing. Meaning that it takes longer to identify issues and longer to resolve them. That’s time, money, and customer satisfaction at stake.<p>Want to build something in-house? Prepare to deploy a team, spend months of development time, and tons of money bringing it to production. Then be ready to have engineers around to babysit your new monitoring tool instead of working on your product.<p>— — —<p>THE BASIC FLOW<p>So, wtf is a “tail -f for your data”. What we mean is this:<p>1. We give you an SDK for your language, a server, and a UI.<p>2. You instrument your code with <i>`StreamdalSDK.Process(yourData)`</i> anytime you read or write data in your app.<p>3. You deploy your app&#x2F;service.<p>4. Go to the provided UI (or run the CLI app) and be able to peek into what your app is reading or writing, like with <i>`tail -f`</i>.<p>And that&#x27;s basically it. There&#x27;s a bunch more functionality in the project but we find this to be the most immediately useful part. Every developer we&#x27;ve shown this to has said &quot;I wish I had this at my gig at $company&quot; - and we feel exactly the same. We are devs and this is what we’ve always wanted, hundreds of times - a way to just quickly look at the data our software is producing in real-time, without having to jump through any hoops.<p><i>If you want to learn more about the &quot;why&quot; and the origin of this project - you can read about it here: <a href="https:&#x2F;&#x2F;streamdal.com&#x2F;manifesto">https:&#x2F;&#x2F;streamdal.com&#x2F;manifesto</a></i><p>— — —<p>HOW DOES IT WORK?<p>The SDK establishes a long-running session with the server (using gRPC) and &quot;listens&quot; for commands that are forwarded to it all the way from the <i>UI -&gt; server -&gt; SDK</i>.<p>The commands are things like: <i>&quot;show me the data that you are currently consuming&quot;</i>, <i>&quot;apply these rules to all data that you produce&quot;</i>, <i>&quot;inspect the schema for all data&quot;</i>, and so on.<p>The SDK interprets the command and either executes Wasm-based rules against the data it&#x27;s processing or if it&#x27;s a <i>`tail`</i> request - it&#x27;ll send the data to the server, which will forward it to the UI for display.<p>The SDK <i>IS</i> part of the critical path but it does not have a dependency on the server. If the server is gone, you won&#x27;t be able to use the UI or send commands to the SDKs, but that&#x27;s about it - the SDKs will continue to work and attempt to reconnect to the server behind the scenes.<p>— — —<p>TECHNICAL BITS<p>The project consists of a lot of &quot;buzzwordy&quot; tech: we use gRPC, grpc-Web, protobuf, redis, Wasm, Deno, ReactFlow, and probably a few other things.<p>The server is written in Go, all of the Wasm is Rust and the UI is Typescript. There are SDKs for Go, Python, and Node. We chose these languages for the SDKs because we&#x27;ve been working in them daily for the past 10+ years.<p><i>The reasons for the tech choices are explained in detail here:</i> <a href="https:&#x2F;&#x2F;docs.streamdal.com&#x2F;en&#x2F;resources-support&#x2F;open-source&#x2F;">https:&#x2F;&#x2F;docs.streamdal.com&#x2F;en&#x2F;resources-support&#x2F;open-source&#x2F;</a><p>— — —<p>LAST PART<p>OK, that&#x27;s it. What do you think? Is it useful? Can we answer anything?<p>- If you like what you&#x27;re seeing, give our repo a star: <a href="https:&#x2F;&#x2F;github.com&#x2F;streamdal&#x2F;streamdal">https:&#x2F;&#x2F;github.com&#x2F;streamdal&#x2F;streamdal</a><p>- And If you <i>really</i> like what you&#x27;re seeing, come talk to us on our discord: <a href="https:&#x2F;&#x2F;discord.gg&#x2F;streamdal" rel="nofollow noreferrer">https:&#x2F;&#x2F;discord.gg&#x2F;streamdal</a><p>Talk soon!<p>- Daniel &amp; Ustin

18 comments

tfshover 1 year ago
This is awesome, the UI looks beautiful.<p>I&#x27;ve noticed you&#x27;ve provided Go, Python, and Node SDKs. What&#x27;s the general tech stack for these? I assume your usage of Protobufs is for a consistent schemas between languages?<p>I ask because I&#x27;m curious as to how much work it is to define new SDKs for other languages, as I&#x27;d love a Java implementation - Ideally the SDK should be a pretty thin wrapper, simply calling the gRPC service with some minimal error handling, is this the case?
评论 #38097006 未加载
评论 #38092949 未加载
caledhwaover 1 year ago
This is fabulous work! Really excited for this release! Can&#x27;t wait to get into all the details and see how I can use it in my organization.
dsiesover 1 year ago
Hey peeps - Dan here - ready to answer any questions you&#x27;ve got!
smivanover 1 year ago
Congratulations on the launch!<p>I have been a long time customer of the enterprise version of Streamdal, and I can confidently say Daniel and Ustin are absolutely KILLER engineers. Any time we spoke I always was impressed by their super deep experience and understanding of modern challenges!<p>So good to see you getting some love on HN. Excited to implement this in some personal projects as well!
评论 #38095933 未加载
defanorover 1 year ago
The repository&#x27;s README.md links to &lt;<a href="https:&#x2F;&#x2F;docs.streamdal.com&#x2F;sdks">https:&#x2F;&#x2F;docs.streamdal.com&#x2F;sdks</a>&gt;, which is not there.<p>Those SDKs are simply libraries though, aren&#x27;t they? &quot;SDK&quot; often stands for more than that (e.g., development tools, bits of code not properly packaged), and may be appalling if you don&#x27;t want to wrap a project around such an SDK, as opposed to merely incorporating a library.<p>But then I wonder why it has to be a library at all, limited to just 3 languages: why not to implement a more unixy interface, perhaps with named pipes? And&#x2F;or a library with C API (so that it can be called from any common language), providing file descriptors to write into. With the former approach, basic named pipes or files and actual tail -f can be used, too.
评论 #38095916 未加载
kensavageover 1 year ago
Node support - sweet!! Is there any way to interact with the data as it comes in real-time?
评论 #38089316 未加载
bradbrewerover 1 year ago
I&#x27;d like to use it but I have strict requirements for data not leaving our network
评论 #38090754 未加载
a1369209993over 1 year ago
Obligatory: We already have a open-source tail -f; it&#x27;s called `tail -f`. (Kind of &#x2F;s, but much like the infamous dropbox comment[0], it sucks that there exists a problem for this to solve in the first place.)<p>0: <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=9224">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=9224</a>
评论 #38093005 未加载
评论 #38092756 未加载
tzumbyover 1 year ago
Congrats on the lunch Dan and Ustin!
评论 #38088525 未加载
jtcapover 1 year ago
Maybe I need to read the docs in more detail, but a question that comes to mind is what is the impact on latency and reliability? Can StreamdalSDK.Process be made asynchronous so that any delay in processing the data, or unavailability of the server, has minimal impact on the flow of the application? That is, to make the observing as passive as possible?
评论 #38096965 未加载
pitah1over 1 year ago
Thanks for sharing. Looks simple and easy to use.<p>Could you use this for batch data jobs as well? I would imagine having integration with batch job frameworks like Spark would make this more valuable from an organisation perspective.<p>Also, small note on the website, as an example from the &quot;What is streamdal&quot; page, I feel like I&#x27;m bombarded with emojis, bold and italic text, links, etc.
评论 #38093840 未加载
unkrichkover 1 year ago
Been using Streamdal for a little while now to catch data inconsistencies introduced by human input on our data pipelines, and it&#x27;s been a huge improvement and game-changer for keeping things running smoothly. Thanks team!
tim--over 1 year ago
That console UI looks beautiful!
评论 #38092205 未加载
ollybeeover 1 year ago
Is there not a literal &quot;tail -f&quot; type client to send data from log files?
评论 #38090514 未加载
od0over 1 year ago
Awesome work! Love this
iporolloover 1 year ago
Love the implementation here, much needed monitoring approach on data pipelines
openqueryover 1 year ago
Congrats on the launch! Been waiting for this.
qwidjib0over 1 year ago
Grats on the launch!