Squash is a debugger for microservices that enables developers to debug applications running in Kubernetes from their terminal or IDE without modifying the running code.
Debugging distributed microservice applications presents a fundamental challenge: application state is spread across multiple processes on different nodes, making it difficult to gain a holistic view. While existing tools like OpenTracing and service meshes such as Istio provide passive observability through transaction logs and network monitoring, they offer slow feedback loops and cannot alter application behavior at runtime. Squash addresses this gap by bringing the interactive debugging capabilities familiar from monolithic application development to microservice environments. It bridges the gap between containerized applications running in Kubernetes and developer IDEs, allowing developers to set breakpoints, step through code across service boundaries, inspect and modify variable values in real time, and debug specific containers, pods, services, or images without altering the running application.
Squash suits teams working with Kubernetes-deployed microservices who need rapid debugging cycles and real-time investigation capabilities. It is particularly valuable when passive observability tools prove insufficient for understanding complex runtime behavior. The tool is designed with extensibility in mind, making it straightforward to add support for additional languages, debuggers, and IDEs.
Almost all open issues are raised by outside users rather than the core team, indicating a substantial base of adopters reporting real-world use and providing feedback from production environments.