HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
EthanBlackburn
tangent
Rust2025–2025
EthanBlackburn / tangent

tangent

High-performance, DSL-free stream processing

2Distinct people
3Mentions
0Explicit recommenders
63GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

High-performance, DSL-free stream processing

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 5:04:57 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by day3 dated mentions

Observed mentions: 2025-10-31 16:51:16 UTC to 2025-11-20 16:41:31 UTC.

012025-10-31 00:00:00 UTC to 2025-11-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 commentsOct 312025-11-01 00:00:00 UTC to 2025-11-02 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-11-02 00:00:00 UTC to 2025-11-03 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-11-03 00:00:00 UTC to 2025-11-04 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-11-04 00:00:00 UTC to 2025-11-05 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments2025-11-05 00:00:00 UTC to 2025-11-06 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-11-06 00:00:00 UTC to 2025-11-07 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-11-07 00:00:00 UTC to 2025-11-08 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-11-08 00:00:00 UTC to 2025-11-09 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-11-09 00:00:00 UTC to 2025-11-10 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-11-10 00:00:00 UTC to 2025-11-11 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 commentsNov 102025-11-11 00:00:00 UTC to 2025-11-12 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-11-12 00:00:00 UTC to 2025-11-13 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-11-13 00:00:00 UTC to 2025-11-14 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-11-14 00:00:00 UTC to 2025-11-15 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-11-15 00:00:00 UTC to 2025-11-16 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-11-16 00:00:00 UTC to 2025-11-17 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-11-17 00:00:00 UTC to 2025-11-18 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-11-18 00:00:00 UTC to 2025-11-19 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-11-19 00:00:00 UTC to 2025-11-20 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-11-20 00:00:00 UTC to 2025-11-21 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 commentsNov 20

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Oct 312025-10-31 00:00:00 UTC2025-11-01 00:00:00 UTC110
Nov 12025-11-01 00:00:00 UTC2025-11-02 00:00:00 UTC000
Nov 22025-11-02 00:00:00 UTC2025-11-03 00:00:00 UTC000
Nov 32025-11-03 00:00:00 UTC2025-11-04 00:00:00 UTC000
Nov 42025-11-04 00:00:00 UTC2025-11-05 00:00:00 UTC110
Nov 52025-11-05 00:00:00 UTC2025-11-06 00:00:00 UTC000
Nov 62025-11-06 00:00:00 UTC2025-11-07 00:00:00 UTC000
Nov 72025-11-07 00:00:00 UTC2025-11-08 00:00:00 UTC000
Nov 82025-11-08 00:00:00 UTC2025-11-09 00:00:00 UTC000
Nov 92025-11-09 00:00:00 UTC2025-11-10 00:00:00 UTC000
Nov 102025-11-10 00:00:00 UTC2025-11-11 00:00:00 UTC000
Nov 112025-11-11 00:00:00 UTC2025-11-12 00:00:00 UTC000
Nov 122025-11-12 00:00:00 UTC2025-11-13 00:00:00 UTC000
Nov 132025-11-13 00:00:00 UTC2025-11-14 00:00:00 UTC000
Nov 142025-11-14 00:00:00 UTC2025-11-15 00:00:00 UTC000
Nov 152025-11-15 00:00:00 UTC2025-11-16 00:00:00 UTC000
Nov 162025-11-16 00:00:00 UTC2025-11-17 00:00:00 UTC000
Nov 172025-11-17 00:00:00 UTC2025-11-18 00:00:00 UTC000
Nov 182025-11-18 00:00:00 UTC2025-11-19 00:00:00 UTC000
Nov 192025-11-19 00:00:00 UTC2025-11-20 00:00:00 UTC000
Nov 202025-11-20 00:00:00 UTC2025-11-21 00:00:00 UTC110

What Hacker News says

3 sources

Show HN: Tangent – Security log pipeline powered by WASM

Hi HN! We’re Ethan and Danny, the authors of Tangent (https://github.com/telophasehq/tangent), a Rust-based log pipeline where all normalization, enrichment, and detection logic runs as WASM plugins. We kept seeing the same problems in the OCSF (https://ocsf.io) community: 1) Schemas change constantly. Large companies have whole teams dedicated to keeping vendor→OCSF mappings up to date. 2) There’s no shared library of mappings, so everyone recreates the same work. 3) Writing mappers is tedious, repetitive work. 4) Most pipelines use proprietary DSLs that are hard to share and hard for tools/LLMs to generate. Tangent takes a different approach: no DSLs – mappings and enrichments are just normal code compiled to WASM, shareable plugins – we maintain a community library (https://github.com/telophasehq/tangent-plugins), interoperability – we
Read the rest
can run other engines’ DSLs (e.g., Bloblang) inside WASM for easy migration, full flexibility – plugins can validate schemas, call external APIs (https://github.com/telophasehq/tangent/blob/main/examples/en...), or perform complex transforms (https://github.com/telophasehq/tangent-plugins/blob/main/zee...). Here's an example Python transformation plugin to drop all fields from a log except `message`: import json from typing import List from wit_world.imports import log # `log.Logview` is Tangent's zero-copy JSON accessor type. def process_logs(self, logs: List[log.Logview]) -> bytes: out = bytearray() for lv in logs: msg = lv.get("msg") value = msg.value if msg is not None else "" out.extend(json.dumps({"message": value}).encode() + b"\n") return bytes(out) We have plenty more examples in the repo. Because plugins are just Go/Python/Rust, LLMs can create new mappers with ease. For example, I asked: Generate a mapper from AWS Security Hub Finding to OCSF and only had to make a few minor tweaks. (https://github.com/telophasehq/tangent-plugins/blob/main/aws...) Performance-wise, a 16-core Amazon Linux box processes ~480 MB/s end-to-end (TCP → Rust-WASM transform → sink) on ~100-byte JSON logs. The CLI includes tooling to scaffold, test, and benchmark plugins locally. Here's a deep dive into how we are able to get this performance: https://docs.telophasehq.com/runtime. We’d love to get your feedback! What do you think?
28 points · Open discussion

Show HN: Tangent – Open‑source stream processor with native‑speed WASM plugins

We built Tangent, a stream-processing engine with WASM at its core. In our benchmarks, end-to-end ingestion and transformations perform at native speed, with some workloads even running faster. Hi HN, we’d like to share our open-source stream processing engine written in Rust, where WASM transformations/enrichments are first-class. There have been several earlier attempts to bring WebAssembly into the streaming world (Arroyo, Vector, etc.) that faced toolchain or runtime-maturity issues. We felt now is the right time: thanks to recent performance improvements by the wasmtime team, we see ~230 MiB/s throughput ingesting from a socket and passing to a Go-WASM transform[1] on a 16 core machine. The same workload runs with slightly lower throughput in native Go. WASM is not just a novel technology we wanted to play with; we have two core moti
Read the rest
vations: 1. We’ve been collaborating with the OCSF team, and discovered that sharing vendor->OCSF mappers is a big hurdle (vendor schema drift + OCSF updates). With WASM, we don’t need to agree on a DSL before we can share transformations. 2. LLMs are much better at writing code (Go, Python, etc.) than domain-specific languages. We wanted a stream processor where you can write plugins, test, and benchmark easily and locally. With Tangent we rewrote all the mappers in the OCSF examples repo in about an hour[2] We’d love to hear your feedback! [1] https://github.com/telophasehq/tangent/blob/main/examples/go... [2] https://github.com/ocsf/examples
3 points · Open discussion

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.