Full-stack indie hacker building SQLitePilot in public and hoping these tools genuinely help other teams.
Dev Updates
Dev Update: 3 Quality-of-Life Improvements That Remove Daily Friction
Automatic connection handoff, table filtering, and smarter SSH key reuse reduce repetitive steps when managing remote SQLite.
Small product updates are easy to ignore when they are not flashy.
But in a tool you use every day, small frictions are exactly what drain your focus.
This week we shipped three quality-of-life improvements in SQLitePilot that remove repetitive clicks and reduce setup noise when working with remote SQLite over SSH.
1) Switching connections now auto-connects
Previously, changing the selected connection in the explorer often meant one extra step: click Connect.
Now, when you manually select a different connection, SQLitePilot immediately attempts to connect in the background. No extra button click needed.
We still keep the guarded deep-link hydration flow in place to avoid reconnect loops during URL state restore, but for normal day-to-day switching it now feels instant.
Why it matters
- Less click fatigue when jumping between environments.
- Faster context switching during debugging.
- Fewer moments where you wonder, "Why is it not showing anything?"
2) Table explorer now has an instant filter
Large schemas can turn the table list into noise.
You can now filter tables directly in the explorer with a lightweight input. As you type, the list narrows immediately and the counter reflects filtered vs total tables.
If nothing matches, you get a clear "No matching tables" state instead of a blank-looking sidebar.
Why it matters
- Faster navigation in bigger projects.
- Less scrolling, more direct targeting.
- Better orientation when dealing with similarly named tables.
3) SSH keys are now reused per server+user (with safe cleanup)
This is the biggest workflow win in this batch.
When you create a new connection, SQLitePilot now checks for an existing managed key that already matches the same server IP and SSH username in your organization. If one exists, we reuse it. If not, we generate a new Ed25519 keypair as before.
That means you only need to update ~/.ssh/authorized_keys when a matching reusable key does not already exist.
We also tightened deletion behavior: removing a connection only deletes the underlying key when no other connection still references it.
Why it matters
- Fewer repeated server-side key setup steps.
- Safer key lifecycle for teams with multiple connections to the same host/user.
- Cleaner, more predictable access management without manual key-library workflows.
The direction stays the same
SQLitePilot should feel like a practical engineering tool, not a checklist machine.
These updates are not "headline features," but they remove the tiny interruptions that add up when you are doing production data work under pressure.
As always, if a workflow still feels clunky, send it over and I will prioritize it.