Skip to content

Commit 8c0a368

Browse files
authored
Merge pull request #16 from RockxyApp/develop
docs(readme): clarify public release and ecosystem
2 parents 8f06ffa + d12eac1 commit 8c0a368

8 files changed

Lines changed: 76 additions & 27 deletions

.github/scripts/check-public-safety.sh

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -413,13 +413,13 @@ c_out="$(grep -nHIE -e 'DEVELOPMENT_TEAM[[:space:]]*=[[:space:]]*"?[A-Z0-9]{10}"
413413
emit_locations "Concrete Apple Team ID" "$c_out" 2
414414
415415
# --- Check 5: sibling-product token 'rockxy' -------------------------------
416-
# Strip the canonical public source path and Tracexy website route from a copy
417-
# of each line;
418-
# if 'rockxy' still survives (case-insensitively) the line leaks sibling-product
419-
# naming. awk prints the ORIGINAL line; the strip is only for the decision.
416+
# Strip approved public product references from a copy of each line. Product
417+
# names are allowed in the explicit public ecosystem section and in canonical
418+
# public repository links; private sibling-product internals remain forbidden.
419+
# awk prints the ORIGINAL line; the strip is only for the decision.
420420
c_out="$(grep -nHIi 'rockxy' "${FILES[@]}" 2>/dev/null \
421-
| awk '{ t = $0; gsub(/RockxyApp\/Tracexy/, "", t); gsub(/https:\/\/rockxy\.io\/tracexy/, "", t); if (tolower(t) ~ /rockxy/) print $0 }')"
422-
emit_locations "Sibling-product token 'rockxy' (canonical Tracexy routes allowed)" "$c_out" 2
421+
| awk '{ t = $0; gsub(/RockxyApp\/(Tracexy|Rockxy|Shieldxy)/, "", t); gsub(/https:\/\/rockxy\.io\/tracexy/, "", t); gsub(/Rockxy Ecosystem/, "", t); gsub(/\[Rockxy ecosystem\]/, "", t); gsub(/\[Rockxy\]/, "", t); if (tolower(t) ~ /rockxy/) print $0 }')"
422+
emit_locations "Sibling-product token 'rockxy' (approved public ecosystem references allowed)" "$c_out" 2
423423
424424
# --- Check 6: monetization / licensing strategy phrases ----------------------
425425
c_out="$(grep -nHIiE -e 'pricing' \

README.md

Lines changed: 70 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@
55
<h1 align="center">Tracexy</h1>
66

77
<p align="center">
8-
<strong>Native macOS network intelligence, organized around sessions—not packet noise.</strong>
8+
<strong>The AGPL-licensed public source edition of Tracexy for macOS.</strong>
99
</p>
1010

1111
<p align="center">
12+
Native macOS network intelligence, organized around sessions—not packet noise.<br>
1213
Capture live traffic or open a saved capture, then investigate hosts, processes, protocols,
1314
timing, and raw packet evidence in one local-first workspace.
1415
</p>
@@ -17,8 +18,8 @@
1718
<a href="https://github.com/RockxyApp/Tracexy/actions/workflows/build.yml"><img src="https://github.com/RockxyApp/Tracexy/actions/workflows/build.yml/badge.svg" alt="Build and validation status" /></a>
1819
<img src="https://img.shields.io/badge/macOS-14%2B-blue" alt="macOS 14 or later" />
1920
<img src="https://img.shields.io/badge/Swift-5-orange" alt="Swift 5" />
20-
<img src="https://img.shields.io/badge/status-MVP-8A63D2" alt="MVP status" />
21-
<a href="LICENSE"><img src="https://img.shields.io/badge/license-AGPL--3.0-green" alt="AGPL-3.0 license" /></a>
21+
<img src="https://img.shields.io/badge/status-stable-2E8B57" alt="Stable status" />
22+
<a href="LICENSE"><img src="https://img.shields.io/badge/source-AGPL--3.0--or--later-green" alt="AGPL-3.0-or-later source license" /></a>
2223
<a href="CONTRIBUTING.md"><img src="https://img.shields.io/badge/PRs-welcome-brightgreen" alt="Pull requests welcome" /></a>
2324
</p>
2425

@@ -53,16 +54,35 @@ The main experience is session-first. Raw protocol fields and hex remain one cli
5354
bytes are the answer, but they do not dominate the workspace.
5455

5556
> [!IMPORTANT]
56-
> Tracexy is under active MVP development. Live capture, capture-file IO, bounds-checked decoding,
57-
> bounded connection evidence, selected analysis, terminal local History, protected session export,
58-
> filtering, correlation, and the native investigation workspace are implemented and tested. General
59-
> TCP reassembly, deep protocol analysis, automatic retention, and AI/MCP transport remain future work.
57+
> This repository contains Tracexy's public source edition under
58+
> [AGPL-3.0-or-later](LICENSE). Builds made solely from this repository are AGPL builds.
59+
> The official Community DMG is a signed release artifact built from this public source checkout;
60+
> it does not represent a separate closed-source edition or a different license. Third-party
61+
> components remain under their own licenses; see [Licensing](#licensing) below.
62+
63+
## Part of the Rockxy Ecosystem
64+
65+
Tracexy is part of the [Rockxy ecosystem](https://github.com/RockxyApp/Rockxy), a family of native,
66+
local-first tools for understanding and controlling software and network behavior. The products
67+
have distinct jobs and separate repositories, while sharing a focus on transparent evidence,
68+
explicit data boundaries, and native platform experiences:
69+
70+
- **[Rockxy](https://github.com/RockxyApp/Rockxy)** — intercept, inspect, and modify HTTP, HTTPS,
71+
WebSocket, GraphQL, and other application traffic.
72+
- **Tracexy** — passively capture network traffic and organize it into explainable sessions,
73+
protocol observations, and evidence-linked investigation workflows.
74+
- **[Shieldxy](https://github.com/RockxyApp/Shieldxy)** — application-aware network security,
75+
connection control, and policy-oriented visibility.
76+
77+
Tracexy complements the ecosystem rather than replacing any one tool: the application-level
78+
debugger focuses on traffic control, while Tracexy focuses on passive network intelligence across
79+
interfaces, processes, protocols, and session relationships.
6080

6181
## See Tracexy in action
6282

6383
<p align="center">
6484
<a href="https://rockxy.io/tracexy#demo">
65-
<img src="docs/media/tracexy-demo/overview.webp" alt="Tracexy live capture workspace with session list, traffic graph, decoded packet fields, and raw bytes" width="100%" />
85+
<img src="docs/media/Tracexy-Light-050.png" alt="Tracexy live capture workspace with session list, traffic graph, decoded packet fields, and raw bytes" width="100%" />
6686
</a>
6787
</p>
6888

@@ -71,28 +91,20 @@ bytes are the answer, but they do not dominate the workspace.
7191
</p>
7292

7393
<p align="center">
74-
<img src="docs/media/tracexy-demo/interface-picker.webp" alt="Tracexy interface picker showing Wi-Fi, Ethernet, Thunderbolt, tunnel, VPN, and loopback sources" width="100%" />
94+
<img src="docs/media/Tracexy-Capturing-Option-050.png" alt="Tracexy interface picker showing Wi-Fi, Ethernet, Thunderbolt, tunnel, VPN, and loopback sources" width="100%" />
7595
</p>
7696
<p align="center"><em>Choose the interface and start from the traffic surface that matters.</em></p>
7797

7898
<p align="center">
79-
<img src="docs/media/tracexy-demo/capture-settings.webp" alt="Tracexy capture settings for interface selection, BPF filters, snap length, and packet retention" width="100%" />
99+
<img src="docs/media/Tracexy-Settings-050.png" alt="Tracexy capture settings for interface selection, BPF filters, snap length, and packet retention" width="100%" />
80100
</p>
81101
<p align="center"><em>Control capture scope, filters, packet detail, and retention before traffic leaves the wire.</em></p>
82102

83-
<p align="center">
84-
<img src="docs/media/tracexy-demo/source-tree.webp" alt="Tracexy source tree grouping captured sessions by application and address" width="496" />
85-
</p>
86-
<p align="center"><em>Navigate from applications to domains and IP addresses without losing the session context.</em></p>
87-
88103
<p align="center">
89104
<img src="docs/media/tracexy-demo/packet-inspector.webp" alt="Tracexy packet inspector showing decoded protocol fields beside raw hexadecimal bytes" width="100%" />
90105
</p>
91106
<p align="center"><em>Inspect decoded protocol fields alongside the raw bytes that support them.</em></p>
92107

93-
<p align="center">
94-
<a href="https://rockxy.io/tracexy#demo">Watch the full 45-second Tracexy walkthrough →</a>
95-
</p>
96108

97109
## Why Tracexy
98110

@@ -124,7 +136,7 @@ bytes are the answer, but they do not dominate the workspace.
124136

125137
## Protocol coverage
126138

127-
Application-layer decoding is intentionally metadata-focused in the current MVP. The always-on fold
139+
Application-layer decoding is intentionally metadata-focused in the current implementation. The always-on fold
128140
recovers only bounded initial TLS/HTTP/DNS metadata; an explicit Follow Stream action can rescan a
129141
stable saved or stopped source without turning the capture path into an unbounded stream store.
130142

@@ -262,6 +274,43 @@ Please read [CONTRIBUTING.md](CONTRIBUTING.md) before submitting a change.
262274
For decoder work, include normal, truncated, and malformed-input coverage. Captures attached to an
263275
issue must be reviewed and redacted first.
264276

265-
## License
277+
## Licensing
278+
279+
### Tracexy source
280+
281+
The source in this repository is licensed under the
282+
[GNU Affero General Public License, version 3 or later (AGPL-3.0-or-later)](LICENSE).
283+
AGPL is a strong copyleft license: you may run, study, modify, and redistribute Tracexy,
284+
including commercially, as long as you follow its conditions.
285+
286+
In practical terms, redistributed modified versions must keep the license and required notices,
287+
identify meaningful changes, and provide the corresponding source under AGPL terms. If a modified
288+
version offers network interaction, AGPL section 13 also requires users who interact with it over
289+
the network to be offered access to the corresponding source. The full legal terms, including the
290+
no-warranty provisions, are in [LICENSE](LICENSE).
291+
292+
A build made solely from this repository is therefore an AGPL build. AGPL does not grant rights to
293+
the Tracexy name, logo, or other trademarks.
294+
295+
### Public source and official Community DMG
296+
297+
The public GitHub repository is the source of truth for Tracexy's Community release channel. The
298+
official DMG published on [GitHub Releases](https://github.com/RockxyApp/Tracexy/releases) is built
299+
from that public checkout using the Release configuration, then:
300+
301+
- signed with a Developer ID certificate and hardened runtime;
302+
- packaged as a drag-to-Applications macOS DMG;
303+
- notarized with Apple's notary service; and
304+
- published with a checksum and a Sparkle signature for the public update feed.
305+
306+
The DMG is therefore an authenticated and notarized distribution of the public AGPL source, not a
307+
closed-source or separately licensed Tracexy binary. A local build from the repository remains
308+
valid under AGPL-3.0-or-later, but it will have its own signing identity, notarization state,
309+
update-feed behavior, and release provenance.
310+
311+
### Third-party and platform components
266312

267-
Tracexy is available under the [GNU Affero General Public License v3.0](LICENSE).
313+
Tracexy may link to third-party libraries and Apple system components, including the Sparkle update
314+
framework. Those components are not relicensed by this repository and remain subject to their own
315+
license terms and notices. Before distributing a build, review the licenses bundled by Xcode and the
316+
dependency metadata in [`Package.resolved`](Tracexy.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved).
1.42 MB
Loading

docs/media/Tracexy-Dark-050.png

981 KB
Loading

docs/media/Tracexy-Filter-050.png

76 KB
Loading
2.45 MB
Loading

docs/media/Tracexy-Light-050.png

1000 KB
Loading
1.02 MB
Loading

0 commit comments

Comments
 (0)