Give people who love working with networks the tools they deserve to optimize and troubleshoot network traffic.
๐ Documentation: https://riptide.space/docs/
Requirements:
- git
- Java 25
- Docker with Docker Compose
git clone https://github.com/Riptide-Labs/riptide.git && cd riptide
Compile from source with tests
make
Build a container image in your local registry
make oci
Render a test coverage report (JaCoCo)
make coverage
Run the integration and e2e test tier (requires Docker; drives real NetFlow v5/v9 and IPFIX
traffic from the nl6 simulator through riptide
into ClickHouse). The nl6 image tag is pinned in src/test/java/org/riptide/e2e/Nl6Container.java
and is bumped deliberately โ it is a wire-format contract, not a Dependabot-managed dependency.
make e2e
The e2e tier includes an optional full mode (Linux only): nl6 devices export flows
from per-device source IPs and riptide's SNMP enrichment walks back to each device's
simulated agent. It is gated on RIPTIDE_E2E_FULL_MODE=1 and skipped otherwise
(e.g. on macOS). To run it on a Linux host:
docker network create --subnet 172.30.42.0/24 nl6-fullmode
sudo ip route add 10.42.0.0/16 via 172.30.42.10
sudo sysctl -w net.ipv4.conf.all.rp_filter=2
RIPTIDE_E2E_FULL_MODE=1 make e2e
cd target
java -jar riptide-flows-*.jar
git clone https://github.com/Riptide-Labs/riptide.git
Run with a local build OCI image riptide:local
cd deployment/riptide
docker compose up -d
- Grafana: http://localhost:3000 with login admin/admin.
- Clickhouse UI with http://localhost:5521
- Send flows to your Riptide server on 9999/udp
Tip
If you want to run the latest stable version, create a compose.override.yml and set the image tag to ghcr.io/riptide:latest.
Run just a ClickHouse stack
cd deployment/clickhouse
docker compose up -d
The default configuration is shipped in application.properties. You have two options to customize configuration parameters.
- Providing an application.properties next to the jar file, in Docker /app/application.properties
- Set environment variables
If you want to use environment variables, you need to convert the configuration key to upper case and underscores. Here is an example:
riptide.clickhouse.endpoint -> RIPTIDE_CLICKHOUSE_ENDPOINT
You can also bind mount your configuration to /app/application.properties.
git checkout main && git pull
git checkout -B release
git push -u origin release
make release RELEASE_VERSION=1.0.0
Pushing the resulting vX.Y.Z tag is what publishes the release: signed jar,
DEB and RPM packages, an SBOM and a multi-arch container image on
ghcr.io/riptide-labs/riptide. The full procedure, the image tagging scheme and
the cosign verify commands are in RELEASING.md.
You are very welcome to join us to make this project a better place. You can find us at:
Start with CONTRIBUTING.md. In short: work from an issue,
Conventional Commits, sign off
every commit with git commit -s, and label AI-assisted work with an
Assisted-by: trailer.
Found a security problem? Please don't open an issue โ see SECURITY.md.
Riptide is licensed under the GNU General Public License v3.0 or later
(GPL-3.0-or-later). See LICENSE for the full text.
Thanks goes to these wonderful people (emoji key):
Dustin Frisch ๐ป ๐ฌ ๐ ๐ค |
Ronny Trommer ๐ป ๐ ๐ ๐ง |
mvrueden ๐ป ๐ |
Christian Pape ๐ป |
This project follows the all-contributors specification. Contributions of any kind welcome!
