frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

Show HN: Pbar.io – Distributed progress bars that work in terminals and browsers

https://pbar.io
24•clav88•2d ago
I built pbar.io because I was tired of SSH'ing into servers to check if my data processing scripts were still running, or worse, having them finish/crash without knowing.

It's a simple REST API that lets you create and update progress bars from anywhere. The same progress bar can be viewed as terminal output (with ANSI colors), in a browser, or consumed as JSON.

I'm actually tracking this HN discussion with pbar. The progress bar increases with each comment - watch it live as we discuss!

Web: https://pbar.io/Y8yg3BG Terminal: curl https://pbar.io/api/bars/Y8yg3BG

More features that emerged from my own use cases: - Hierarchical progress bars (parent bars auto-aggregate children) - Python package (pip install pbar-io) that wraps tqdm - just swap the import - QR codes to monitor progress on your phone while away from desk - No auth required for quick prototypes

Curious what use cases you might have for this!

Comments

mathfailure•2d ago
I got "Error Progress bar not found" visiting your https://pbar.io/Y8yg3BG link. However, there are no comments yet, so that might explain it. So this is a service you provide.

I must admit that idea behind this project is nice, but I'm not going to get dependent on someone else's infrastructure (and I think I'm not the only one thinking that way), can I host it myself or is the source not available? I don't see any links to sources or github, so decided to just ask here (and to also make the 1st comment here to see if your link would work now).

clav88•2d ago
Thanks for trying it! The link works for me. The progress bar shows 1% now that there's 1 comment and should update to 2% after my reply ;)

I'm happy to clean up the source a bit and put it on GitHub if people like it and prefer to host it themselves. I thought I'd host it myself under a short, memorable domain, so people can easily try it out and share short links to their progress bars.

mathfailure•2d ago
Oh, it was an error on my side, the link actually works.

If you are happy to share the code - I think quite some people would be happy. The openness doesn't guarantee, but usually leads to better security, performance, etc.

It is very nice of you to provide such a service (and for free, as I see), but your docs says we, users, better not update stuff faster than once per second and that's quite a big limitation for some big companies with lots of processes to track (which probably can't be grouped together into a single batch update as your docs suggest to do).

clav88•2d ago
Yes, definitely. The service could easily be scaled and rate limits can be increased if users are willing to pay for. Self-hosting is a good alternative, as you already suggested.

I'll work on cleaning up the code, adding some dev documentation and releasing it on GitHub when I find some time. Perhaps this weekend already!

roadbuster•2d ago
What does the backend architecture look like? Heavily distributed, or everything in-memory on a single address space server? How do you handle users writing tight loops which fetch the endpoint in rapid fire?
clav88•2d ago
It's a Next.js app currently deployed on vercel with a Postgres DB running on supabase. Both are fairly scalable, but not in an optimal way in terms of costs. I'd either have to introduce a Pro pricing plan or get some donations from sponsors. The simple nature of the API would allow to heavily distribute this though, i.e. one could simply shard by progress bar.

Regarding the tight loops: Currently there is just basic rate limiting in place and the Python client batches updates by default. The app is not intended for short-lived progress bars with fast updates. These usually also don't have a good reason to be shared and live on the web. It's really much more useful for slowly updating, long running processes.

dcreater•2d ago
Make number go up
luke-stanley•1d ago
A hierarchical progress bar service is a cool idea in principle, for some tasks state is worth decoupling from process memory. I do note that the homepage example changes colour without real hierarchy shown though! Something worth noting, is that the hierarchy of an important task of some kind might not be known at the start. It's interesting to consider how to have a great developer UX for managing this. I'd probably want MCP support (or a boring OpenAPI). If someone can show in a few lines how a developer can have a messy process get meaningful hierarchy and progress added to it and it's child nodes, without being overly rigid or SaaS externality concerns, that would be really cool, it could perhaps help give feedback on some very intractable problems. People often don't realise that showing useful progress can easily be a really hard distributed systems problem that a lot of real life systems are bottlenecked by. It's interesting that LLMs might actually be able to help ask questions about progress to help better represent what progress should be shown as, asking about subproblems, helping guide the state with structured decision making etc.
luke-stanley•1d ago
Like what about key life events?
clav88•1d ago
Interesting! I agree that nested / hierarchical progress is not straightforward. Even if all child problems are known, the weighting between their individual progress to compute the overall, aggregated parent progress is not easy to determine as it depends on the relative complexity of the child tasks. Perhaps an LLM could help here, but it would have to know the detailed scope of each task it is tracking. Alternatively, pbar could allow users to set their own weights for each sub-bar, so they could integrate their own logic or an LLM to do that. I didn’t want this to become complex in any way though. I therefore opted to do the same as tqdm. A parent progress bar simply counts how many of its children bars are fully completed. It will show 90% progress if 9 out of 10 child tasks are done, even if the last task takes much longer than the others. You can try it e.g. by making nested loops using the tqdm wrapper.
luke-stanley•1d ago
You've got a great start, I agree that your swap-in interface for tqdm is very important for migration, and so you solved at the right level first, and you've found an interesting problem / solution area with beautiful execution.

I can totally see a "social layer for progress bars" and "Deep Research for progress bars" as valuable things to do on top of it. Like how decision markets and search fit in. Where is reputation and trust? Is metadata encryption needed?

There are developer UX improvements possible of course, as with most things. How exactly parent and child relationships and completions are best represented for an intuitive UX is an interesting circle to square while keeping a simple tqdm API.

I'd love it if this was open-source or zero-knowledge, though that may be a bit of a loaded term when actually wanting client side title / description metadata encryption. I guess you'd want a client doing simple but robust encryption on the metadata, but probably not progress values (or at least not at first, for sanity).

Any plans for a MCP API? It's pretty easy these days.

clav88•1d ago
No plans at this point, but I'm planning to open source it soon, so you can add the MCP API if you like and start building the "social layer for progress bars" ;)
egorfine•1d ago
This is an incredibly ingenious feature. I'm speechless. It's one of those "I should have come up with it!" things.

Although the practical use case is unclear.

buenzlikoder•1d ago
This could really help in some corporate network scenarios, where batch jobs run behind a proxy. That usually rules out pull based monitoring while this seems easy to setup
clav88•1d ago
I agree, many of the monitoring tools are much more powerful than this, but also a lot harder to set up. The goal was to build something with as little friction as possible that you can set up in under a minute, which makes it viable for any one-off script you might be running.
vindin•1d ago
Really clever, nice work. Love the minimal but polished approach you’ve taken
clav88•1d ago
Thanks very much! A minimal approach is indeed one of the goals.

Show HN: A store that generates products from anything you type in search

https://anycrap.shop/
851•kafked•18h ago•265 comments

Show HN: UltraPlot. A Succinct Wrapper for Matplotlib

https://github.com/Ultraplot/UltraPlot
6•cvanelteren•3d ago•1 comments

Show HN: CLAVIER-36 – A programming environment for generative music

https://clavier36.com/p/LtZDdcRP3haTWHErgvdM
117•river_dillon•16h ago•23 comments

Show HN: Vicinae – A native, Raycast-compatible launcher for Linux

https://github.com/vicinaehq/vicinae
148•aurellius•4d ago•32 comments

Show HN: Small Transfers – charge from 0.000001 USD per request for your SaaS

https://smalltransfers.com/
172•strnisa•3d ago•63 comments

Show HN: I made a generative online drum machine with ClojureScript

https://dopeloop.ai/beat-maker/
192•chr15m•1d ago•47 comments

Show HN: Building a Deep Research Agent Using MCP-Agent

https://thealliance.ai/blog/building-a-deep-research-agent-using-mcp-agent
86•saqadri•3d ago•18 comments

Show HN: MemoryMe: An effort to beat Cognitive Decline

https://shraddhabuiltitwithai.com/memoryme/
6•shraddha92•11h ago•0 comments

Show HN: YC Startup Map – A Map Visualization of the YC Startup Directory

https://ycstartupmap.com/
14•Brysonbw•1d ago•5 comments

Show HN: Aris – a free AI-powered answer engine for kids

https://www.aris.chat
29•andrewdug•1d ago•60 comments

Show HN: Term.everything – Run any GUI app in the terminal

https://github.com/mmulet/term.everything
1057•mmulet•4d ago•143 comments

Show HN: council - ai groupchat of ctos (no more asking ai to roleplay)

https://www.trycouncil.com/council/cto
9•YAndreaRusso•10h ago•8 comments

Show HN: An MCP Gateway to block the lethal trifecta

https://github.com/Edison-Watch/open-edison
49•76SlashDolphin•1d ago•22 comments

Show HN: MediaMouth – I created a comment section for movies and TV shows

https://mediamouthapp.com/
2•KiaraCanaan•11h ago•0 comments

Show HN: I built an open source drag and drop editor for Genkit AI flows

4•mfolaron•12h ago•1 comments

Show HN: C++ Compiler Support Page

https://cppstat.dev
64•cemdervis•5d ago•30 comments

Show HN: wcwidth-o1 – Find Unicode text cell width in no time for JavaScript/TS

https://github.com/dawsonhuang0/Wcwidth-O1
15•dawson0•1d ago•3 comments

Show HN: Making a cross-platform game in Go using WebRTC Datachannels

https://pion.ly/blog/making-a-game-with-pion/
72•valorzard•3d ago•11 comments

Show HN: Writing – How to make a computer browser internet automatically

2•imvetri•13h ago•2 comments

Show HN: TailGuard – Bridge your WireGuard router into Tailscale via a container

https://github.com/juhovh/tailguard
148•juhovh•4d ago•34 comments

Show HN: DWS OS, a Plan 9 Inspired Web “OS”

https://dws.rip
48•tdubey•1d ago•9 comments

Show HN: Nano Banana Prompt Generator

https://nanobananaprompt.org/prompt-generator/
3•chooat•15h ago•1 comments

Show HN: Tap Map (iOS) crowdsourced beer prices in Edinburgh and London

http://tapmapapp.org
3•pcrausaz•15h ago•0 comments

Show HN: Bottlefire – Build single-executable microVMs from Docker images

https://bottlefire.dev/
161•losfair•6d ago•24 comments

Show HN: A simple stock analysis app

https://market-sage.netlify.app
2•totaldude87•16h ago•0 comments

Show HN: Haystack – Review pull requests like you wrote them yourself

https://haystackeditor.com
85•akshaysg•3d ago•59 comments

Show HN: Consentless – A minimalist, privacy-preserving traffic counter

https://consentless.joeldare.com
9•codazoda•1d ago•2 comments

Show HN: AI Roast – Fun AI-generated roasts of websites

https://ai-roast.jamatrix.io/
2•happy_malone•19h ago•1 comments

Show HN: Tsink – Embedded time-series database for Rust

https://github.com/h2337/tsink
6•h2337•1d ago•1 comments

Show HN: I made a small site to share text and files

https://www.dum.pt/
40•MarsB•1d ago•50 comments