The best Hacker News stories from Show from the past day
Latest posts:
Show HN: Iterm-Mcp – AI Terminal/REPL Control for iTerm2
Hi HN! Ever wish you could just point your AI assistant at your terminal and say 'what's wrong with this output?' That's why I built iterm-mcp. It lets MCP clients like Claude Desktop directly interact with your iTerm2 terminal - reading logs, running commands, using REPLs, and helping debug issues. Want to explore data or debug using a REPL? The AI can start the REPL, run commands, and help interpret the results.<p>This is an MCP server that integrates with Claude Desktop, LibreChat, and other Model Context Protocol compatible clients.<p><a href="https://github.com/ferrislucas/iterm-mcp">https://github.com/ferrislucas/iterm-mcp</a><p><i>Note: Independent project, not officially affiliated with iTerm2</i><p>## Features<p>*Efficient Token Use:* iterm-mcp gives the model the ability to inspect only the output that the model is interested in. The model typically only wants to see the last few lines of output even for long running commands.<p>*Natural Integration:* You share iTerm with the model. You can ask questions about what's on the screen, or delegate a task to the model and watch as it performs each step.<p>*Full Terminal Control and REPL support:* The model can start and interact with REPL's as well as send control characters like ctrl-c, ctrl-z, etc.<p>*Easy on the Dependencies:* iterm-mcp is built with minimal dependencies and is runnable via npx. It's designed to be easy to add to Claude Desktop and other MCP clients. It should just work.<p>## Real-World Example: Debugging Sidekiq Jobs<p>I needed to debug a Sidekiq job with complex arguments. The arguments were partially obfuscated in the logs. I asked Claude: "open rails console, show me arguments for the latest XYZ job". The model:<p>1. Launched Rails console
2. Retrieved job details
3. Displayed the arguments that I was looking for<p>## Architectural Journey<p>This project had a couple interesting constraints around command execution:<p>### 1. Token Efficiency Challenge<p>I wanted to constrain tokens as much as possible. I didn't want to send the entire output of a long running command to the model, but there's not a great way to know which parts of the output are important to what the model is doing. Sampling could be used here, but it's not well supported yet.<p>*Solution:* I arrived at a pull-based solution for this. The command from the model is sent to the terminal, and the model is made aware of how many lines of output were generated. The model can choose to retrieve as many lines of the buffer that it thinks are relevant.<p>### 2. Long-Running Process Support<p>I wanted to support long running processes. It turns out that when you run `brew install ffmpeg` - it takes a while, and it's not always clear when the job is done. In early proof of concepts, the model would assume the command completed successfully and begin sending additional commands to the terminal before the first command had finished.<p>*Solution:* iTerm provides a way to ask if the terminal is waiting for user input, but I found that it tended to show false positives in certain situations. For example, a long running command would result in iTerm reporting that the terminal was waiting for input when in fact the command was still running. I found that inspecting the processes associated with the terminal and waiting until the most interesting of those processes settles to a low resource usage is a fair indicator of long running commands being ready for input.<p>## Requirements<p>* iTerm2 must be running<p>* Node version 18 or greater<p>## Safety Considerations<p>* The user is responsible for using the tool safely.<p>* No built-in restrictions: iterm-mcp makes no attempt to evaluate the safety of commands that are executed.<p>* Models can behave in unexpected ways. The user is expected to monitor activity and abort when appropriate.<p>* For multi-step tasks, you may need to interrupt the model if it goes off track. Start with smaller, focused tasks until you're familiar with how the model behaves.
Show HN: voidDB – A transactional key-value DB written in Go for 64-bit Linux
Show HN: voidDB – A transactional key-value DB written in Go for 64-bit Linux
Show HN: voidDB – A transactional key-value DB written in Go for 64-bit Linux
Show HN: Ahey – A simple pub-sub service built on top of web push
Show HN: Ahey – A simple pub-sub service built on top of web push
Show HN: Ldump – serialize any Lua data
Some time ago, I was implementing saves for my LOVE2D game. I wanted to do a full dump of the game state -- which included closures (AI), complex graphs, sets with tables as keys and also fundamentally non-serializable data (coroutines and userdata), that require user-defined serialization/deserialization logic. I went through every Lua serialization library -- none covered all data types/cases. So I wrote my own.<p>It is a polished version, thoroughly annotated, tested and documented. It is made to be as functional and customizable as possible (or at least I did everything I could think of). I would be happy to hear suggestions/corrections for both code and documentation -- even nitpicky ones.
Show HN: Ldump – serialize any Lua data
Some time ago, I was implementing saves for my LOVE2D game. I wanted to do a full dump of the game state -- which included closures (AI), complex graphs, sets with tables as keys and also fundamentally non-serializable data (coroutines and userdata), that require user-defined serialization/deserialization logic. I went through every Lua serialization library -- none covered all data types/cases. So I wrote my own.<p>It is a polished version, thoroughly annotated, tested and documented. It is made to be as functional and customizable as possible (or at least I did everything I could think of). I would be happy to hear suggestions/corrections for both code and documentation -- even nitpicky ones.
Show HN: Ldump – serialize any Lua data
Some time ago, I was implementing saves for my LOVE2D game. I wanted to do a full dump of the game state -- which included closures (AI), complex graphs, sets with tables as keys and also fundamentally non-serializable data (coroutines and userdata), that require user-defined serialization/deserialization logic. I went through every Lua serialization library -- none covered all data types/cases. So I wrote my own.<p>It is a polished version, thoroughly annotated, tested and documented. It is made to be as functional and customizable as possible (or at least I did everything I could think of). I would be happy to hear suggestions/corrections for both code and documentation -- even nitpicky ones.
Show HN: Ldump – serialize any Lua data
Some time ago, I was implementing saves for my LOVE2D game. I wanted to do a full dump of the game state -- which included closures (AI), complex graphs, sets with tables as keys and also fundamentally non-serializable data (coroutines and userdata), that require user-defined serialization/deserialization logic. I went through every Lua serialization library -- none covered all data types/cases. So I wrote my own.<p>It is a polished version, thoroughly annotated, tested and documented. It is made to be as functional and customizable as possible (or at least I did everything I could think of). I would be happy to hear suggestions/corrections for both code and documentation -- even nitpicky ones.
Show HN: Uscope, a new Linux debugger written from scratch
Hi! I've been building a debugger on my nights and weekends because it's fun, and I personally need a better debugger for my work. GDB and LLDB pain me greatly; we can and will do better!<p>As explained in the README, it's still very early-days and it's not ready for use yet, but check back often because it's improving all the time!<p>Check out <a href="https://calabro.io/uscope" rel="nofollow">https://calabro.io/uscope</a> for a more detailed explanation.<p>Thanks for taking a look!
Show HN: Uscope, a new Linux debugger written from scratch
Hi! I've been building a debugger on my nights and weekends because it's fun, and I personally need a better debugger for my work. GDB and LLDB pain me greatly; we can and will do better!<p>As explained in the README, it's still very early-days and it's not ready for use yet, but check back often because it's improving all the time!<p>Check out <a href="https://calabro.io/uscope" rel="nofollow">https://calabro.io/uscope</a> for a more detailed explanation.<p>Thanks for taking a look!
Show HN: Uscope, a new Linux debugger written from scratch
Hi! I've been building a debugger on my nights and weekends because it's fun, and I personally need a better debugger for my work. GDB and LLDB pain me greatly; we can and will do better!<p>As explained in the README, it's still very early-days and it's not ready for use yet, but check back often because it's improving all the time!<p>Check out <a href="https://calabro.io/uscope" rel="nofollow">https://calabro.io/uscope</a> for a more detailed explanation.<p>Thanks for taking a look!
Show HN: TinyJs React like framework in 35 lines of code
Hi HN, I got to work yesterday and today and came up with a very simple way to create and manage state in TinyJS.<p>I end up creating a simple App to illustrate how to use the new createState function and custom components in a React like manner. Here's the code for it - <a href="https://github.com/victorqribeiro/tinyapp">https://github.com/victorqribeiro/tinyapp</a><p>Here's the PR for the createState function - <a href="https://github.com/victorqribeiro/TinyJS/pull/9">https://github.com/victorqribeiro/TinyJS/pull/9</a>
Show HN: TinyJs React like framework in 35 lines of code
Hi HN, I got to work yesterday and today and came up with a very simple way to create and manage state in TinyJS.<p>I end up creating a simple App to illustrate how to use the new createState function and custom components in a React like manner. Here's the code for it - <a href="https://github.com/victorqribeiro/tinyapp">https://github.com/victorqribeiro/tinyapp</a><p>Here's the PR for the createState function - <a href="https://github.com/victorqribeiro/TinyJS/pull/9">https://github.com/victorqribeiro/TinyJS/pull/9</a>
Show HN: Workflow86 - An AI business analyst and automation engineer
Hey HN,<p>We built Workflow86 to help teams build and automate their internal business processes and workflows using drag and drop components like forms, tasks, tables and nodes for business logic, API requests, running custom code etc. It works as a standalone process/workflow automation tool, or as a workflow customization layer on top of existing apps and systems like HRIS, CRM and ERP.<p>One common problem we hear from users is that no-code still has a significant learning curve, and it can take some time to understand how to properly build something. Users also needed help with knowing what to build in the first place, or what a process might or should look like.<p>To solve this, we've integrated an AI that acts as a business analyst/consultant and workflow automation engineer. This AI is powered by a combination of Large Language Models and lots of prompt engineering, RAG and prompt chaining techniques we developed along the way.<p>See a demo of it in action here: <a href="https://www.loom.com/share/fdbd5ad64c8f4071a062ecaa6a6d01f1?sid=a84ac71b-4639-4e2c-ae9e-33a3c30006d4" rel="nofollow">https://www.loom.com/share/fdbd5ad64c8f4071a062ecaa6a6d01f1?...</a><p>In business analyst/consultant mode, the AI helps users brainstorm ideas, identify and discover processes and draft what a process should look like. Like a business analyst/consultant, the AI works to pull and extract information and details from the user by asking the right questions rather than rely on the user's instructions alone.<p>Once the required information has been gathered, the AI goes into engineer mode: it will plan and then build the entire workflow by selecting the right nodes, connecting them together and then fully configuring every single node individually as well. This includes writing custom code and API requests using stored credentials when required.<p>Once a workflow is built, edits can be done manually or by asking the AI to adjust the workflow at any time (e.g., “Add a compensation band check before final approval”). The AI has full context of the current state of the workflow, so it can “patch” in any changes like adding new nodes, rewriting existing nodes and so on.<p>Some use cases we’ve seen from customers include building:
- automated compliance checks for new CRM leads
- custom international contractor onboarding workflows on top of a HRIS
- automated vendor risk assessment before ERP updates<p>Try it out and let us know how the AI performs and any other feedback you have!<p>Full docs can be found at <a href="https://docs.workflow86.com">https://docs.workflow86.com</a>
Show HN: Workflow86 - An AI business analyst and automation engineer
Hey HN,<p>We built Workflow86 to help teams build and automate their internal business processes and workflows using drag and drop components like forms, tasks, tables and nodes for business logic, API requests, running custom code etc. It works as a standalone process/workflow automation tool, or as a workflow customization layer on top of existing apps and systems like HRIS, CRM and ERP.<p>One common problem we hear from users is that no-code still has a significant learning curve, and it can take some time to understand how to properly build something. Users also needed help with knowing what to build in the first place, or what a process might or should look like.<p>To solve this, we've integrated an AI that acts as a business analyst/consultant and workflow automation engineer. This AI is powered by a combination of Large Language Models and lots of prompt engineering, RAG and prompt chaining techniques we developed along the way.<p>See a demo of it in action here: <a href="https://www.loom.com/share/fdbd5ad64c8f4071a062ecaa6a6d01f1?sid=a84ac71b-4639-4e2c-ae9e-33a3c30006d4" rel="nofollow">https://www.loom.com/share/fdbd5ad64c8f4071a062ecaa6a6d01f1?...</a><p>In business analyst/consultant mode, the AI helps users brainstorm ideas, identify and discover processes and draft what a process should look like. Like a business analyst/consultant, the AI works to pull and extract information and details from the user by asking the right questions rather than rely on the user's instructions alone.<p>Once the required information has been gathered, the AI goes into engineer mode: it will plan and then build the entire workflow by selecting the right nodes, connecting them together and then fully configuring every single node individually as well. This includes writing custom code and API requests using stored credentials when required.<p>Once a workflow is built, edits can be done manually or by asking the AI to adjust the workflow at any time (e.g., “Add a compensation band check before final approval”). The AI has full context of the current state of the workflow, so it can “patch” in any changes like adding new nodes, rewriting existing nodes and so on.<p>Some use cases we’ve seen from customers include building:
- automated compliance checks for new CRM leads
- custom international contractor onboarding workflows on top of a HRIS
- automated vendor risk assessment before ERP updates<p>Try it out and let us know how the AI performs and any other feedback you have!<p>Full docs can be found at <a href="https://docs.workflow86.com">https://docs.workflow86.com</a>
Show HN: Distr – open-source distribution platform for on-prem deployments
Distr is designed to help software engineers distribute and manage their applications or agents in customer-controlled or shared-responsibility environments. You only need a Docker Compose file or Helm chart—everything else for on-prem is handled by the platform.<p>We’re are an open source dev tool company. Over the past couple of months, we’ve spoken with dozens of software companies to understand their challenges with on-prem deployments. We analyzed the internal tools they’ve built and the best practices from existing solutions, combining them into a prebuilt, Open Source solution that works out of the box and integrates seamlessly.<p>Distr consists of two key components:<p>1. Hub - Provides a centralized view of all deployments and controls connected agents. - Comes with a simple GUI but also supports API and SDK access for seamless integration. - Fully Open- Surce and self-hostable, or you can use our fully managed platform.<p>2. Lightweight Agents - Pre-built agents for Helm (Kubernetes) and Docker Compose (VM) that run alongside your application. - Handle lifecycle tasks like guided installation, updates, and rollbacks. - Provide basic metrics (health status, application version) and logs<p>If you already have a customer portal or self-service interface for on-prem deployments, you can seamlessly integrate all features into your existing portal or application using our API or SDK. Alternatively, you can use our pre-built, white-labeled customer portal.<p>Here’s what an integration into your existing customer portal could look like:<p><pre><code> import {DistrService} from "@glasskube/distr-sdk";
const customerHasAutoUpdatesEnabled = false; // replace with your own logic
const deploymentTargetId = 'da1d7130-bfa9-49a1-b567-c49728837df7';
const service = new DistrService({
apiKey: 'distr-8c24167aeb5fd4bb48b6d2140927df0f'
});
const result = await service.isOutdated(deploymentTargetId);
if(result.deploymentTarget.deployment?.latestStatus?.type !== 'ok') {
// let the user decide whether to allow updates from an instable state, e.g. with:
if(!confirm('The deployment is not in a stable state. Do you want to update anyway?')) {
return;
}
}
if(result.outdated) {
if(customerHasAutoUpdatesEnabled) {
await service.updateDeployment({deploymentTargetId});
// notify customer about the update
} else {
const newerVersionsAvailable = result.newerVersions;
// notify customer about the newer versions, e.g. via email
}
}
</code></pre>
With the SDK/API, you can:
- Display real-time deployed version and deployment status directly within the application, notifying customers when their deployed version is outdated.
- Allow customers to trigger updates from within your app using a simple API call<p>If you’re distributing software and want to streamline updates or enhance monitoring, we’d love your feedback and are here to answer any questions.<p>Getting started is easy—just bring your Docker Compose file or Helm chart, and we’ll guide you through the rest.<p>Check out the fully managed version (<a href="https://app.distr.sh/register" rel="nofollow">https://app.distr.sh/register</a>) and explore our documentation (<a href="https://distr.sh/docs/" rel="nofollow">https://distr.sh/docs/</a>) to learn more.
Show HN: Distr – open-source distribution platform for on-prem deployments
Distr is designed to help software engineers distribute and manage their applications or agents in customer-controlled or shared-responsibility environments. You only need a Docker Compose file or Helm chart—everything else for on-prem is handled by the platform.<p>We’re are an open source dev tool company. Over the past couple of months, we’ve spoken with dozens of software companies to understand their challenges with on-prem deployments. We analyzed the internal tools they’ve built and the best practices from existing solutions, combining them into a prebuilt, Open Source solution that works out of the box and integrates seamlessly.<p>Distr consists of two key components:<p>1. Hub - Provides a centralized view of all deployments and controls connected agents. - Comes with a simple GUI but also supports API and SDK access for seamless integration. - Fully Open- Surce and self-hostable, or you can use our fully managed platform.<p>2. Lightweight Agents - Pre-built agents for Helm (Kubernetes) and Docker Compose (VM) that run alongside your application. - Handle lifecycle tasks like guided installation, updates, and rollbacks. - Provide basic metrics (health status, application version) and logs<p>If you already have a customer portal or self-service interface for on-prem deployments, you can seamlessly integrate all features into your existing portal or application using our API or SDK. Alternatively, you can use our pre-built, white-labeled customer portal.<p>Here’s what an integration into your existing customer portal could look like:<p><pre><code> import {DistrService} from "@glasskube/distr-sdk";
const customerHasAutoUpdatesEnabled = false; // replace with your own logic
const deploymentTargetId = 'da1d7130-bfa9-49a1-b567-c49728837df7';
const service = new DistrService({
apiKey: 'distr-8c24167aeb5fd4bb48b6d2140927df0f'
});
const result = await service.isOutdated(deploymentTargetId);
if(result.deploymentTarget.deployment?.latestStatus?.type !== 'ok') {
// let the user decide whether to allow updates from an instable state, e.g. with:
if(!confirm('The deployment is not in a stable state. Do you want to update anyway?')) {
return;
}
}
if(result.outdated) {
if(customerHasAutoUpdatesEnabled) {
await service.updateDeployment({deploymentTargetId});
// notify customer about the update
} else {
const newerVersionsAvailable = result.newerVersions;
// notify customer about the newer versions, e.g. via email
}
}
</code></pre>
With the SDK/API, you can:
- Display real-time deployed version and deployment status directly within the application, notifying customers when their deployed version is outdated.
- Allow customers to trigger updates from within your app using a simple API call<p>If you’re distributing software and want to streamline updates or enhance monitoring, we’d love your feedback and are here to answer any questions.<p>Getting started is easy—just bring your Docker Compose file or Helm chart, and we’ll guide you through the rest.<p>Check out the fully managed version (<a href="https://app.distr.sh/register" rel="nofollow">https://app.distr.sh/register</a>) and explore our documentation (<a href="https://distr.sh/docs/" rel="nofollow">https://distr.sh/docs/</a>) to learn more.
Show HN: Distr – open-source distribution platform for on-prem deployments
Distr is designed to help software engineers distribute and manage their applications or agents in customer-controlled or shared-responsibility environments. You only need a Docker Compose file or Helm chart—everything else for on-prem is handled by the platform.<p>We’re are an open source dev tool company. Over the past couple of months, we’ve spoken with dozens of software companies to understand their challenges with on-prem deployments. We analyzed the internal tools they’ve built and the best practices from existing solutions, combining them into a prebuilt, Open Source solution that works out of the box and integrates seamlessly.<p>Distr consists of two key components:<p>1. Hub - Provides a centralized view of all deployments and controls connected agents. - Comes with a simple GUI but also supports API and SDK access for seamless integration. - Fully Open- Surce and self-hostable, or you can use our fully managed platform.<p>2. Lightweight Agents - Pre-built agents for Helm (Kubernetes) and Docker Compose (VM) that run alongside your application. - Handle lifecycle tasks like guided installation, updates, and rollbacks. - Provide basic metrics (health status, application version) and logs<p>If you already have a customer portal or self-service interface for on-prem deployments, you can seamlessly integrate all features into your existing portal or application using our API or SDK. Alternatively, you can use our pre-built, white-labeled customer portal.<p>Here’s what an integration into your existing customer portal could look like:<p><pre><code> import {DistrService} from "@glasskube/distr-sdk";
const customerHasAutoUpdatesEnabled = false; // replace with your own logic
const deploymentTargetId = 'da1d7130-bfa9-49a1-b567-c49728837df7';
const service = new DistrService({
apiKey: 'distr-8c24167aeb5fd4bb48b6d2140927df0f'
});
const result = await service.isOutdated(deploymentTargetId);
if(result.deploymentTarget.deployment?.latestStatus?.type !== 'ok') {
// let the user decide whether to allow updates from an instable state, e.g. with:
if(!confirm('The deployment is not in a stable state. Do you want to update anyway?')) {
return;
}
}
if(result.outdated) {
if(customerHasAutoUpdatesEnabled) {
await service.updateDeployment({deploymentTargetId});
// notify customer about the update
} else {
const newerVersionsAvailable = result.newerVersions;
// notify customer about the newer versions, e.g. via email
}
}
</code></pre>
With the SDK/API, you can:
- Display real-time deployed version and deployment status directly within the application, notifying customers when their deployed version is outdated.
- Allow customers to trigger updates from within your app using a simple API call<p>If you’re distributing software and want to streamline updates or enhance monitoring, we’d love your feedback and are here to answer any questions.<p>Getting started is easy—just bring your Docker Compose file or Helm chart, and we’ll guide you through the rest.<p>Check out the fully managed version (<a href="https://app.distr.sh/register" rel="nofollow">https://app.distr.sh/register</a>) and explore our documentation (<a href="https://distr.sh/docs/" rel="nofollow">https://distr.sh/docs/</a>) to learn more.