Remix.run Logo
▲ Show HN: Ledge.sh – Runnable Markdown Notes(ledge.sh)
33 points by dancablam 19 hours ago | 28 comments

Hi HN,

Ledge is a Markdown notebook that runs shell commands, code, SQL, etc from inside your own notes.

I built Ledge because I spend much of my day copy/pasting commands from my notes into the terminal. I was inspired by how much cmux helped me organize my terminals - but there was still a split brain between my notes and frequently run commands. I've been daily-driving it for the past few weeks and use it for deploys, API calls, smoke tests, etc.

Ledge runs your real shell just like a terminal app and can be hosted locally or remotely over SSH using ledge-server. I've been building it since July and have recently added support for all the major platforms: Mac (Silicon), Windows (WSL required), Linux, iOS, Android. Mobile devices require SSH access to a ledge-server and Android is still in beta and looking for beta testers (see link on website)!

It's built on Bun and Electrobun and is free and open-source. Feel free to review the code and contribute at https://github.com/ledgesh/ledge

Feedback is very much welcome. Any must-have features that are missing?

▲edude03 7 minutes ago | parent | next [-]

I feel like there has been a few takes on this (atuin desktop comes to mind[0] but apparently it's not a going concern anymore?) why hasn't it caught on?

0: https://github.com/atuinsh/desktop

▲TheGoodBarn an hour ago | parent | prev | next [-]

This is awesome I will definitely play around with it. Fits the niche gap as a standalone app vs something like [Observable Framework](https://observablehq.github.io/framework/) for data analytical type things.

I wish Notion could just integrate these things together and make it work, or someone build an Obsidian plugin. More often than not it would be so convenient to do something like this.

▲dancablam an hour ago | parent [-]

Awesome! Let me know how it goes.

▲dannyw 13 minutes ago | parent | prev | next [-]

Love this concept, simple but brilliant idea with lots of utility. I think this can fit in a decent niche. I’ll give it a try!

▲theCodeStig an hour ago | parent | prev | next [-]

As an Emacs user for over a decade I think this is brilliant, it solves my biggest gripes with org-babel which prevent me from using it in a team setting. Ledge is a lot like org-babel from Emacs, but for muggles: a familiar UI, and common format go a long way.

▲imglorp 10 minutes ago | parent | next [-]

I wonder what would org-babel for team settings look like? Disk/interchange format seems less interesting than what gets shipped around and what the UX feels like.

▲dancablam an hour ago | parent | prev [-]

Hey thanks! This gives me the motivation to keep on evolving this project :)

▲michaelastreiko 39 minutes ago | parent | prev | next [-]

Runnable notes in plain Markdown is a nice one-person stack move—fewer copy/paste hops between the doc and the shell when shipping alone.

▲replwoacause a minute ago | parent | next [-]

@dang does hn have any defenses against accounts like this one?

▲dancing 20 minutes ago | parent | prev [-]

Thank you Mr. Obvious AI

▲imglorp 12 minutes ago | parent [-]

Good eye. Its comment history really makes the point. Is it karma farming maybe?

▲classictraffic 35 minutes ago | parent | prev | next [-]

This is really cool, and I love the mobile support too! I’ll definitely be giving this a spin

▲tetraodonpuffer an hour ago | parent | prev | next [-]

cool idea, do you have any plans to integrate command generation with the shell completion / aliases / functions? Say I have tons of muscle memory on using ctrl-r fzf to get things from history, or on pressing tab to autocomplete pod names etc. so I would never write out a full kubectl command to execute by hand

▲dancablam 43 minutes ago | parent [-]

Ctrl-R, fzf and tab completion work in the terminal drawer. But completion in the editor doesn't exist currently. Really good idea, however so let me look into it!

▲melito an hour ago | parent | prev | next [-]

Looks cool. I vibe coded this a while back to share some org docs on the web https://orgmode.dev/ - its currently a mess, but it does mostly work.

▲baranguneysel 10 hours ago | parent | prev | next [-]

Very cool! I launched something similar as well. My idea was to create a working document in which people could develop their own tools and agents. Conversations with coding agents are treated as editable, executable documents. Both the person and the agent can write on the same page. Rather than correcting a mistake in a follow-up, you can rewrite it, delete a detour, or edit and re-run an earlier prompt. The file is always readable Markdown. Check out: https://piary.dev/

Feel free to get in touch if you are open to an exchange, you can find my contact details in the write-up.

▲dancablam 8 hours ago | parent [-]

Nice! I'll take a look.

▲KetoManx64 25 minutes ago | parent | prev | next [-]

Woooow! I love the idea of having documentation that I can just run directly as I'm reading through it, that also has a nice GUI to it. There's a similar product called Atuin Desktop (https://github.com/atuinsh/desktop) that uses Tauri for the GUI and the performance is just abysmal (makes my pc fans spin up like crazy when I launch it and navigate around), and have been on a lookout for something that handles the GUI aspect better. Definitely going to try this out.

▲dancablam 17 minutes ago | parent [-]

Great to hear! Hope it works well for you. Let me know if you hit any snags!

▲rvdca 4 hours ago | parent | prev | next [-]

How does this compete to something like Org-mode?

▲dancablam 3 hours ago | parent [-]

Good question. Main differences of Ledge: You don't need Emacs for those of us that don't use it already. Markdown instead of Org syntax. Shells are interactive by default. Mobile apps can run the shell/code.

▲wakaru44 11 hours ago | parent | prev [-]

Years ago I just used Jupyter notebooks with a bash (or many others) backend to have a similar thing.

▲dancablam 8 hours ago | parent [-]

Jupyter is great. From what I recall it's bash kernel isn't a real terminal session so sudo prompts, top, etc can tend to get a bit wonky. I also have a preference towards Markdown over .ipynb.

▲bpshaver an hour ago | parent [-]

This is all valid, but I'd suggest rethinking the slogan "The notebook that runs code" at the top of the README. I much prefer .md too and haven't used notebooks regularly in years, but nevertheless I scoffed when I read that (I thought: hasn't this guy heard of Jupyter?). I believe you'd be better off not calling this a "notebook" at all since that terms tends to describe something slightly different than what you have here.

▲dancablam an hour ago | parent | next [-]

Good feedback. Perhaps "Runnable markdown notes" instead of "The notebook that runs code".

▲bpshaver an hour ago | parent [-]

In truth I think it was just the use of the definite article that got me. This is a notebook that runs code, not the notebook that runs code. I just think this is cool and it could be better differentiated.

▲skrtskrt an hour ago | parent | prev [-]

Scoffing and thinking "hasn't this guy heard of Jupyter" says more about your attitude than it does the tool or its README copy.

Hasn't this guy heard of [old product that is a huge pain and no one likes]? Why would he ever make something that suits his own interests and preferences?

▲bpshaver an hour ago | parent [-]

Yes, exactly. I'm sharing with this creator what my initial knee-jerk reaction was, admittedly exaggerating a bit. In case he'd like to avoid other people having a similar reaction. (And indeed, he thanked me for my feedback.)

It seems like you think that pointing out that I'm sharing my attitude is some sort of gotcha, but I'm confused. Sharing one's attitude is the whole point of posting an internet comment, isn't it?