Changelog

New features and improvements to Pipestack.

Changelog #0015

End-to-end JSON support has been behind a feature flag for a few weeks. This week, I polished the user experience and removed the feature flag. You can now send JSON to a HTTP node, process it in your Wasm component and send a modified JSON payload to a HTTP endpoint of your choice.

Platform

  • Removed the JSON feature flag and made it a first-class citizen across all nodes.

CLI

  • N/A

Web

  • UI support for end-to-end JSON support.

Sources

  • N/A

Processors

  • N/A

Sinks

  • N/A

Miscellaneous

  • N/A

Changelog #0014

Granular log level filters (video) and a shiny new date range selector (video) for logs 😊!

Platform

  • N/A

CLI

  • N/A

Web

  • Added granular log level filters (video).
  • Added a new date range selector, including natural language detection, as in "yesterday at 2pm" (video).

Sources

  • N/A

Processors

  • N/A

Sinks

  • N/A

Miscellaneous

  • N/A

Changelog #0013

A customer asked to access their logs programmatically. Up until last week, I had an Open Telemetry Collector and self-hosted Loki, Tempo, Prometheus, and Grafana instances. This was all secured in a private network with no access to the public domain.

I had two options to approach the customer's request:

  1. Open my telemetry infrastructure to the public and secure it
  2. Outsource it all

I opted to outsource it to HyperDX, which was acquired by ClickHouse. So after reading up on all that, I decided to ask for private access to the ClickStack product and migrated over to that. It was as easy as updating my Open Telemetry Collector config and changing my code to fetch logs from the ClickHouse database directly rather than the self-hosted Loki instance.

Platform

  • Migrated logs to ClickStack.
  • Deleted the self-hosted telemetry services 🎉

CLI

  • N/A

Web

  • N/A

Sources

  • N/A

Processors

  • N/A

Sinks

  • N/A

Miscellaneous

  • N/A

Changelog #0012

It's been six weeks since the last housekeeping, so I spent this week getting my cleaning equipment and handyman tools out of the storage to go and clean up the code.

The result:

  • 7.5k lines of code removed
  • Fewer, more streamlined GitHub Workflow files to release new/updated nodes
  • 25 more end-to-end tests

Platform

  • Moved lots of code that's used in multiple services to a shared package. Things like access to the database, secrets backend, and NATS. Also, code used in nodes is now in a shared space to standardize and speed up development.

CLI

  • N/A

Web

  • N/A

Sources

  • N/A

Processors

  • N/A

Sinks

  • N/A

Miscellaneous

  • N/A

Changelog #0011

An ever-growing platform also leads to more potential for unexpected regression bugs. I spent this week catching up on writing tests, mainly end-to-end tests as they bring the most value.

AI was a great companion to get this done with the least amount of effort. A bit of planning, then a detailed prompt and it did it's work while I planned upcoming features and provided a bit of support to the existing customers.

Platform

  • Added test coverage for recently created services and NATS security work I've been doing.

CLI

  • N/A

Web

  • Developed end-to-end tests for the Observability view.

Sources

  • N/A

Processors

  • N/A

Sinks

  • N/A

Miscellaneous

  • N/A

Changelog #0010

With two customers, there is very little needed from me in terms of support. However, I expect this to change as more customers onboard and want to be proactive.

From the beginning, I made sure to expose logs for individual nodes. This already paid off big times! I spent this week working on improving how the logs are exposed to avoid hitting the log backend unnecessarily.

Platform

  • Implemented caching when logs are retrieved.

CLI

  • Continued with a prototype where individual CLI commands are separate Wasm components, which I initially started about a month ago. This allows Pipestack customers to extend the CLI with their own commands to suit their workflows.

Web

  • The usual weekly dependency upgrades, and thanks to that I found two dependencies that are no longer needed. There is a lot more work to be done to make the web app as responsive as it can possibly be, but fewer dependencies is a great start. Not to mention the reduced exposure to supply chain attacks!

Sources

  • N/A

Processors

  • N/A

Sinks

  • N/A

Miscellaneous

  • N/A

Changelog #0009

Unexpected, but exciting! Customer #2 onboarded this week. They set up Pipestack to process application events such as when a new user signs up or churns, when users take certain actions, etc.

I spent the week helping them onboard and added a new feature to the logs view to filter by log level.

Platform

  • N/A

CLI

  • N/A

Web

  • Filter logs by log level.

Sources

  • N/A

Processors

  • N/A

Sinks

  • N/A

Miscellaneous

  • N/A

Changelog #0008

Another week, another opportunity to improve NATS security 😅. A few weeks ago, I put in place the first building block and this week, I built on top of that. With this week's work, each Pipestack customer gets their own NATS account. This means all communication specific to a customer is isolated from any other customer.

This is also an important piece to the puzzle of leaf nodes. Customers will be able to create their own NATS users based on the NATS account they own. Decentralized JWT authentication at work 🥰.

Platform

  • Built automation to create a NATS account per customer, complete with their own signing keys.

CLI

  • N/A

Web

  • Enabled Dependabot updates to keep dependencies updated automatically.

Sources

  • N/A

Processors

  • N/A

Sinks

  • N/A

Miscellaneous

  • N/A

Changelog #0007

Off of last week's housekeeping, security, and performance testing, I tested a few theories to improve overall pipeline performance. The most promising is to migrate to WASI I/O streams. I spent some time this week building a successful prototype. It requires a bit of rewiring, but luckily nothing major thanks to how composable wasmCloud applications are.

Platform

  • N/A

CLI

  • N/A

Web

  • Removed a few dependencies I no longer needed. Less is more!
  • Explored what pipeline-level observability may look like. As a v1, I'll add a right-side panel to the Observability view access to logs.

Sources

  • N/A

Processors

  • N/A

Sinks

  • N/A

Miscellaneous

  • Configured Knope to automate the release of all nodes. As a nice benefit, all internal services are now properly versioned too and contain generated CHANGELOG.md files.

Changelog #0006

I want to spend a week every six (or so) weeks to clean things up and this week was the first such housekeeping week. Tech debt is real and kills velocity, so I actively counter that with regular cleanup work.

Address TODO comments, update project dependencies, refactor LLM-generated code. I also spent a few hours trying to break the system, both from a security and load test perspective. That led to a few fixes that could have been costly... :-).

Platform

  • Consolidated the communication with the Railway API to provision and maintain customer infrastructure.
  • Tightened the API security by removing public access to an endpoint that can now be accessed on the private network.

CLI

Web

  • N/A

Sources

  • N/A

Processors

  • N/A

Sinks

  • N/A

Miscellaneous

  • N/A

Changelog #0005

What a week... I onboarded the first (besides Pipestack itself) customer! It's an agricultural company that processes sensor data of their customers' machines.

It's a proof of concept project that runs in parallel to their existing pipelines. We processed data on day two (their IT team had to approve Pipestack's security). By the end of the week, I got to see the impact Pipestack has and it was beyond impressive 🤯. I knew Wasm Components were lightweight and extremely resource efficient, but now I have actual data. Think 80%+ improvements across CPU, memory, performance, and costs!

Platform

  • Improved on last week's NATS security work by further locking down and segregating communication.

CLI

  • N/A

Web

  • N/A

Sources

  • N/A

Processors

  • N/A

Sinks

  • N/A

Miscellaneous

  • N/A

Changelog #0004

Pipestack leverages wasmCloud, which is built on top of NATS.

The entire Pipestack infrastructure runs in a private network with no external incoming network access other than to the web app. This will change in the future when I introduce leaf nodes, a feature that lets you run individual nodes in your own infrastructure!

In preparation for that, I spent the week digging deep into NATS security. The end result: A secured NATS server with all communication now being encrypted.

Platform

  • Secured the NATS server.

CLI

  • N/A

Web

  • Improved usability for the Builder drag & drop interface. Zoom, pan, dragging is now more intuitive and frankly, less annoying.

Sources

  • N/A

Processors

  • N/A

Sinks

  • N/A

Miscellaneous

Changelog #0003

Building your pipelines with the drag & drop builder is a great way to get started. Looking at the underlying YAML config in the Config view has been fun, but not very helpful :-). That's why I enabled YAML editing, with a few guards to avoid disasters.

This builds the foundation for much more useful features down the road, namely sharing pipelines with copy & paste or direct links to a builder to get started with templates.

Platform

  • Refactored the pipeline_manager service. I initially had a LLM write most of the code, but it became a maintenance nightmare. No more!

CLI

  • N/A

Web

  • Enabled YAML editing in the Config view.

Sources

  • UPDATED Webhook
    • Extracted repetitive code to streamline the addition of new sources.

Processors

  • UPDATED Webhook
    • Extracted repetitive code to streamline the addition of new processors.

Sinks

  • UPDATED Webhook
    • Extracted repetitive code to streamline the addition of new sinks.

Miscellaneous

  • N/A

Changelog #0002

Observability! What I see is what you see. This week's focus was on exposing all logs related to your nodes in the web app's Observability view. There is more work needed to expose logs related to your pipeline overall and your execution environments. The goal is to expose anything I see in my OpenTelemetry dashboards to you.

Platform

  • Developed an API endpoint to fetch logs for individual nodes
  • Improved log attributes to simplify log fetching

CLI

  • N/A

Web

  • Improved the real-time log viewer for each node within a pipeline by adding a filter for levels, search, auto scroll, and a pause button.
  • Added an export button to the log viewer.

Sources

  • N/A

Processors

  • N/A

Sinks

  • UPDATED Webhook
    • Added Headers section.
    • Added Authentication section.
    • Added Validation & Limits section.

Miscellaneous

  • N/A

Changelog #0001

This is it, Pipestack's initial release 🎉! Don't let that fool you though, here's what I shipped.

Platform

  • Defined the YAML config schema
  • Configured CI / CD
  • Set up a project on Railway
  • Developed an infra_manager to, you guessed it, manage infrastructure for individual workspaces created in Pipestack
  • Developed a pipeline_manager used by the web app, future CLI, and a public API to manage pipelines
  • Deployed and configured wasmCloud, NATS, and OpenTelemetry (Prometheus, Tempo, Loki, Grafana)

CLI

  • Not started yet. I'm torn between my CLI template and a more forward-looking approach where each CLI command is a Wasm Component. Anyone could extend the CLI with their own commands, written in a programming language they're familiar with

Web

  • Started a new Remult project with SvelteKit, shadcn-svelte, and Svelte Flow
  • Created the marketing landing page based on a $30 template
  • Put in place a newsletter infrastructure
  • Developed the drag & drop interface used for the pipeline builder
  • Added a real-time log viewer for each node within a pipeline

Sources

  • NEW Webhook
    • You can send a GET or more likely POST request to kick off a pipeline

Processors

  • NEW Wasm Component
    • Upload your own Wasm Component

Sinks

  • NEW Webhook
    • Take the output of a pipeline and send it to your API endpoint(s)

Miscellaneous