<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Nivora releases</title><id>https://zyvorai.github.io/zyvor-nivora/</id><updated>2026-10-16T00:00:00Z</updated>
  <link rel="self" href="https://zyvorai.github.io/zyvor-nivora/feed.xml"/><link href="https://zyvorai.github.io/zyvor-nivora/"/>
  <entry><title>Nivora 0.5.2</title><id>tag:zyvorai.github.io,2026:nivora-0.5.2</id><updated>2026-10-16T00:00:00Z</updated><link href="https://github.com/zyvorai/zyvor-nivora/releases/tag/v0.5.2"/><content type="html">&lt;ul&gt;&lt;li&gt;&lt;b&gt;Fix: &quot;Collector unavailable&quot; on every Mac that runs FluxVM.&lt;/b&gt; FluxVM answers &lt;code&gt;/v1/vms&lt;/code&gt; with &lt;code&gt;{&quot;items&quot;: [...]}&lt;/code&gt; and &lt;code&gt;status&lt;/code&gt;; the collector forwarded that object, the native app expects an array, so decoding the whole snapshot failed and the app showed an error for a collector that was running fine. The collector now normalises &lt;code&gt;vms&lt;/code&gt; and &lt;code&gt;sandboxes&lt;/code&gt; to lists with &lt;code&gt;state&lt;/code&gt; (&lt;code&gt;fluxvm_workloads&lt;/code&gt;), the egress code accepts the envelope too, and the native decoder is tolerant: an unexpected shape in this optional section can no longer blank the app. Regression tests cover the collector, egress and the Swift decoder with real-shaped data.&lt;/li&gt;&lt;li&gt;Fix: the app no longer flashes &quot;Collector unavailable&quot; while the bundled collector starts (about 3 s). A failed poll within the first 20 s with no data keeps &quot;Starting Nivora…&quot;; once data has been shown a failed poll never replaces it.&lt;/li&gt;&lt;li&gt;Native: when the content-filter extension is not in the bundle the app says so (&quot;Content filter is not included in this build&quot;) instead of showing a raw system error.&lt;/li&gt;&lt;li&gt;New: &lt;code&gt;scripts/package-signed.sh&lt;/code&gt; builds a Developer ID signed, hardened-runtime, notarized and stapled DMG. It omits the content-filter extension and the capture helper (a plain Developer ID signature cannot carry their restricted NetworkExtension entitlements) and refuses to sign if restricted entitlements are present. &lt;code&gt;package-dmg.sh&lt;/code&gt; gains &lt;code&gt;SUFFIX&lt;/code&gt;/&lt;code&gt;OUT_DIR&lt;/code&gt; and writes a relative checksum file. The GitHub release DMG from CI is unchanged: ad-hoc signed, not notarized.&lt;/li&gt;&lt;/ul&gt;</content></entry>
  <entry><title>Nivora 0.5.1</title><id>tag:zyvorai.github.io,2026:nivora-0.5.1</id><updated>2026-10-15T00:00:00Z</updated><link href="https://github.com/zyvorai/zyvor-nivora/releases/tag/v0.5.1"/><content type="html">&lt;ul&gt;&lt;li&gt;Release DMG: the app is ad-hoc signed before packaging so &lt;code&gt;codesign --verify --deep --strict&lt;/code&gt; passes (resources are sealed). Still not Developer ID signed or notarised.&lt;/li&gt;&lt;/ul&gt;</content></entry>
  <entry><title>Nivora 0.5.0</title><id>tag:zyvorai.github.io,2026:nivora-0.5.0</id><updated>2026-10-15T00:00:00Z</updated><link href="https://github.com/zyvorai/zyvor-nivora/releases/tag/v0.5.0"/><content type="html">&lt;ul&gt;&lt;li&gt;Native: WidgetKit &quot;Network&quot; widget (small and medium) fed by &lt;code&gt;widget.json&lt;/code&gt; in the widget&#x27;s container, built with &lt;code&gt;make widgets&lt;/code&gt;; documented in &lt;code&gt;docs/WIDGETS.md&lt;/code&gt;. Compile- and codesign-verified only.&lt;/li&gt;&lt;li&gt;Fix: the bundled collector no longer outlives the app. It exits when the launching process is gone (&lt;code&gt;--parent-pid&lt;/code&gt;), and the app picks the next free loopback port if 9857 is held by a stale collector.&lt;/li&gt;&lt;li&gt;Trust score per app, privacy report card, verified process identity (path, signing, team ID; &quot;unsigned binary contacting the internet&quot;), situation profiles, policy-as-code (&lt;code&gt;/v1/policy&lt;/code&gt;, dry-run by default), FluxVM sandbox egress lens, push-only multi-Mac fleet view; &lt;code&gt;nivoractl&lt;/code&gt; verbs for all of them.&lt;/li&gt;&lt;li&gt;Web: Insights view. Native: Insights pane, Shortcuts/Siri actions (&quot;How is my network?&quot;, &quot;Block an app for one hour&quot;), and opt-in notifications for new destinations with Observe / Block 1 h (after the fact; connections are not paused).&lt;/li&gt;&lt;li&gt;Time-travel diff and incident narrative: &lt;code&gt;/v1/diff&lt;/code&gt;, &lt;code&gt;/v1/incident&lt;/code&gt;, &lt;code&gt;nivoractl diff|incident&lt;/code&gt;; on-demand path check (&lt;code&gt;/v1/path-check&lt;/code&gt;, &lt;code&gt;nivoractl path-check&lt;/code&gt;); read-only MCP server &lt;code&gt;agent/nivora_mcp.py&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;LAN change detection: new device on the network (learned by MAC after a baseline), IP→MAC change, gateway MAC change (critical), Wi-Fi network change, and &quot;DNS may bypass the VPN&quot;; findings and Time Machine events.&lt;/li&gt;&lt;li&gt;Daily per-app usage with optional budgets (&lt;code&gt;budgets.json&lt;/code&gt;), &lt;code&gt;/v1/usage&lt;/code&gt;; project attribution (&lt;code&gt;project&lt;/code&gt; on flows, &lt;code&gt;/v1/projects&lt;/code&gt;); Prometheus &lt;code&gt;/metrics&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;Web: &quot;Why this flow?&quot; in the flow sheet and a shadow rule option. Draft Homebrew cask in &lt;code&gt;packaging/homebrew/&lt;/code&gt; (unverified).&lt;/li&gt;&lt;li&gt;Why this flow?: &lt;code&gt;GET /v1/flows/{id}/explain&lt;/code&gt; and &lt;code&gt;nivoractl explain &amp;lt;id&amp;gt;&lt;/code&gt; collect the evidence for one flow. Shadow rules (&lt;code&gt;action: shadow&lt;/code&gt;) and &lt;code&gt;/v1/rule-impact&lt;/code&gt; show what a block would match before it is enabled.&lt;/li&gt;&lt;li&gt;Dev: &lt;code&gt;make help&lt;/code&gt;, &lt;code&gt;check&lt;/code&gt;, &lt;code&gt;test-one&lt;/code&gt;, &lt;code&gt;fixtures&lt;/code&gt;, &lt;code&gt;app&lt;/code&gt;, &lt;code&gt;stop&lt;/code&gt;, &lt;code&gt;clean&lt;/code&gt; shortcuts (documented in &lt;code&gt;docs/TESTING.md&lt;/code&gt;).&lt;/li&gt;&lt;li&gt;Developer intelligence: container runtime awareness (&lt;code&gt;containers&lt;/code&gt;), port ownership/conflicts (&lt;code&gt;port_conflicts&lt;/code&gt;, flagged on listeners), rate-based anomaly findings, and DNS resolver diagnosis (&lt;code&gt;dns_diagnosis&lt;/code&gt;); &lt;code&gt;/v1/containers&lt;/code&gt; and &lt;code&gt;/v1/port-conflicts&lt;/code&gt;. Collector stays stdlib-only and observe-only.&lt;/li&gt;&lt;li&gt;Docs: &lt;code&gt;docs/INSTALL.md&lt;/code&gt; explains the unsigned, un-notarised release (Gatekeeper messages, Open Anyway on macOS 15+, Control-click on 14, &lt;code&gt;xattr&lt;/code&gt;, checksum verification, what works unsigned, uninstall); linked from the README and the site&#x27;s install section and FAQ.&lt;/li&gt;&lt;li&gt;Docs: Time Machine in the screenshot gallery and site picker; &lt;code&gt;scripts/build-tour.py&lt;/code&gt; builds &lt;code&gt;docs/social/nivora-tour.gif&lt;/code&gt; (a pane tour from the real native screenshots, not a screen recording) for the README.&lt;/li&gt;&lt;li&gt;Native Time Machine pane: events by day with kind filter and text filter (&lt;code&gt;TimelineKit&lt;/code&gt;), icons per kind, auto-refresh.&lt;/li&gt;&lt;li&gt;Fix: &lt;code&gt;--demo&lt;/code&gt; no longer writes simulated snapshots, events or destination baselines into the real history database; the simulated Mac has a seeded in-memory event history instead.&lt;/li&gt;&lt;li&gt;Static in-browser demo (&lt;code&gt;web/demo.js&lt;/code&gt;, &lt;code&gt;?demo&lt;/code&gt; or &lt;code&gt;data-demo&lt;/code&gt;): the real dashboard runs on simulated telemetry with no collector; the demo Mac now has 8 apps.&lt;/li&gt;&lt;li&gt;GitHub Pages site (&lt;code&gt;site/&lt;/code&gt;, &lt;code&gt;scripts/build-site.sh&lt;/code&gt;, &lt;code&gt;scripts/site-check.mjs&lt;/code&gt;, &lt;code&gt;.github/workflows/pages.yml&lt;/code&gt;): landing page with a light/dark pane gallery, plus the dashboard under &lt;code&gt;/demo/&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;README rewritten to the Zyvor product standard (hero, why table, screenshots, tiers, maturity, licence); &lt;code&gt;scripts/shots-native.sh&lt;/code&gt; and &lt;code&gt;scripts/build-hero.py&lt;/code&gt; regenerate the images from the real app.&lt;/li&gt;&lt;li&gt;The dashboard loads assets by relative path so it works under a sub-path.&lt;/li&gt;&lt;li&gt;Brand: app icon (an N drawn as a network path) with &lt;code&gt;scripts/build-brand.sh&lt;/code&gt; deriving the icns, favicon, apple-touch icon and share image from one master SVG; the real icon replaces the letter badge in the dashboard.&lt;/li&gt;&lt;li&gt;Native: first-run welcome sheet (once; &lt;code&gt;--welcome&lt;/code&gt; forces it), per-app sparklines and a &quot;What changed&quot; panel on the Overview, Help menu links and a ⌘/ shortcuts sheet, About section in Settings.&lt;/li&gt;&lt;li&gt;Legal: Zyvor name, &lt;code&gt;© 2026 Zyvor AI Labs Private Limited&lt;/code&gt; and BUSL-1.1 shown in the app (bundle copyright, welcome, Settings), the dashboard footer and the share image, matching Zyvor Vytrix.&lt;/li&gt;&lt;li&gt;The collector no longer writes &lt;code&gt;__pycache__&lt;/code&gt; into the app bundle.&lt;/li&gt;&lt;li&gt;Release workflow: pushing a &lt;code&gt;v*&lt;/code&gt; tag builds an unsigned DMG with checksums and drafts a GitHub release (checks the tag against &lt;code&gt;package.json&lt;/code&gt;).&lt;/li&gt;&lt;/ul&gt;</content></entry>
  <entry><title>Nivora 0.3.0</title><id>tag:zyvorai.github.io,2026:nivora-0.3.0</id><updated>2026-10-13T00:00:00Z</updated><link href="https://github.com/zyvorai/zyvor-nivora/releases/tag/v0.3.0"/><content type="html">&lt;ul&gt;&lt;li&gt;Native Flows pane shows a live throughput strip above the filter bar; the Overview Connections tile has a sparkline.&lt;/li&gt;&lt;li&gt;Native: byte/rate formatters show &quot;0 bytes&quot; instead of &quot;Zero KB&quot;; the app activates and fronts its window on launch (first &lt;code&gt;open&lt;/code&gt; from LaunchServices could leave it hidden).&lt;/li&gt;&lt;li&gt;Native UX: filter bar (removable chips, quick filters, &quot;N of M&quot;, saved views) on Flows and Applications, baseline compare card, flow rate sparkline in the inspector, inspector reachable from the application sheet, &quot;Clear filter&quot; empty states, ⌘1–⌘9 pane shortcuts (Go menu), last pane remembered, wider table columns.&lt;/li&gt;&lt;li&gt;Fix: the app bundle never contained the collector or dashboard (xcodegen ignores a top-level &lt;code&gt;resources:&lt;/code&gt; key); they are now bundled as resource sources, including &lt;code&gt;capture.py&lt;/code&gt;, and &lt;code&gt;install-macos.sh&lt;/code&gt; installs &lt;code&gt;capture.py&lt;/code&gt;. A contract test guards both.&lt;/li&gt;&lt;li&gt;Opt-in packet capture: privileged &lt;code&gt;NivoraCaptureHelper&lt;/code&gt; (SMAppService daemon; fixed-argv tcpdump, structured validated requests, caps, 24 h retention), &lt;code&gt;/v1/captures&lt;/code&gt; API, web and native Capture panes, &quot;Capture this flow&quot;, pcap download, demo simulation. Compile- and unit-verified only; see &lt;code&gt;docs/CAPTURE.md&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;Flow inspector (web sheet, native &lt;code&gt;FlowDetailSheet&lt;/code&gt;), grouped Flows views (by app/host/interface), pinned-baseline compare (web), &lt;code&gt;first_seen&lt;/code&gt;/&lt;code&gt;last_seen&lt;/code&gt; per flow, and a demo that now varies over time so charts have shape.&lt;/li&gt;&lt;li&gt;&lt;code&gt;GET /v1/export&lt;/code&gt; (flows/apps/timeline/snapshot/bundle; CSV/JSON/NDJSON/zip; current filter; salted-hash redaction) with an Export dialog in the web UI and an Export menu in the native Flows pane.&lt;/li&gt;&lt;li&gt;Flow filter grammar (&lt;code&gt;app: host: port: proto: iface: state: source: &amp;gt;1mbps !neg&lt;/code&gt;) shared by collector, web and native, with &lt;code&gt;GET /v1/flows?filter=&lt;/code&gt;, &lt;code&gt;nivoractl flows --filter&lt;/code&gt;, removable filter chips and saved views (web localStorage / native UserDefaults, palette + Views menu).&lt;/li&gt;&lt;li&gt;Native Flows pane exports the current (filtered, sorted) flows as CSV with spreadsheet-formula neutralisation, matching the web export.&lt;/li&gt;&lt;li&gt;Native XCTest target &lt;code&gt;NivoraTests&lt;/code&gt; (snapshot decoding, alert rules) with a demo-collector fixture; run in the macOS CI job.&lt;/li&gt;&lt;li&gt;Dashboard UX pass toward Vytrix parity: command palette (&lt;code&gt;⌘K&lt;/code&gt;), keyboard shortcuts, application detail sheet, sortable/highlighted tables, throughput chart with tooltip, per-app sparklines, toasts, skeleton/error states, Settings view (theme, accent, density, refresh, alert threshold, pinned apps), snapshot JSON and flows CSV export.&lt;/li&gt;&lt;li&gt;Health ring now reflects the real score and status.&lt;/li&gt;&lt;li&gt;Fix: the collector rejected the dashboard&#x27;s own same-origin &lt;code&gt;Origin&lt;/code&gt; header (module script fetch and rule POSTs returned 403 in a browser). Loopback same-origin is now accepted; foreign origins are still rejected.&lt;/li&gt;&lt;li&gt;Web logic split into &lt;code&gt;web/lib.js&lt;/code&gt; with unit tests.&lt;/li&gt;&lt;li&gt;Web dashboard recoloured with the Netra palette and SF type scale (light-first, dark via OS or Settings); accents are now blue/cyan/green/amber/purple/graphite.&lt;/li&gt;&lt;li&gt;Native app rebuilt in Vytrix&#x27;s structure (Model/Views split, Panel/MetricTile/Meter components, Swift Charts, Settings, menu-bar window, Alerts, app detail sheet, &lt;code&gt;--appearance&lt;/code&gt;/&lt;code&gt;--section&lt;/code&gt; flags) with the same Netra palette; palette parity with the web is tested.&lt;/li&gt;&lt;li&gt;Fix: the collector no longer crashes at startup when the App Group rules directory cannot be created (unsigned builds); it falls back to &lt;code&gt;~/.local/share/nivora/rules.json&lt;/code&gt;.&lt;/li&gt;&lt;li&gt;NetworkExtension ported to macOS APIs: a single content-filter system extension (&lt;code&gt;NEFilterDataProvider&lt;/code&gt; + &lt;code&gt;handle(_:)&lt;/code&gt; reports) replaces the iOS-style data/control app extensions; source app identity from audit tokens; macOS 15 flow endpoints with a macOS 14 hostname fallback; &lt;code&gt;./scripts/build-native.sh&lt;/code&gt; now builds the app with the embedded extension.&lt;/li&gt;&lt;li&gt;Fix: entitlements and Info.plist keys are now declared in &lt;code&gt;project.yml&lt;/code&gt; (xcodegen was overwriting the checked-in plists with empty ones); the app declares system-extension install and content-filter entitlements.&lt;/li&gt;&lt;li&gt;The app activates the extension via &lt;code&gt;OSSystemExtensionRequest&lt;/code&gt; before enabling the filter (observe-first, user initiated).&lt;/li&gt;&lt;/ul&gt;</content></entry>
  <entry><title>Nivora 0.2.0</title><id>tag:zyvorai.github.io,2026:nivora-0.2.0</id><updated>2026-10-13T00:00:00Z</updated><link href="https://github.com/zyvorai/zyvor-nivora/releases/tag/v0.2.0"/><content type="html">&lt;ul&gt;&lt;li&gt;Live per-flow and per-app RX/TX rates from counter deltas.&lt;/li&gt;&lt;li&gt;0–100 network health model with explainable route/DNS/latency/interface/safety components.&lt;/li&gt;&lt;li&gt;Local network diagnosis and traffic history series.&lt;/li&gt;&lt;li&gt;App → interface → destination Network Map.&lt;/li&gt;&lt;li&gt;ARP/NDP neighbors, listening services and exposure classification.&lt;/li&gt;&lt;li&gt;&lt;code&gt;networksetup&lt;/code&gt; hardware-port/Wi-Fi enrichment.&lt;/li&gt;&lt;li&gt;Persistent destination behavior learning with first-seen findings and Time Machine events.&lt;/li&gt;&lt;li&gt;VPN-state, listener and traffic-spike Time Machine events.&lt;/li&gt;&lt;li&gt;One-hour default leases for block rules; validation for predicates, ports, IPs and expiries.&lt;/li&gt;&lt;li&gt;FluxVM network health, endpoints, Hubble flows and observe-state integration, plus host-flow correlation.&lt;/li&gt;&lt;li&gt;New health/traffic/topology/neighbors/listeners/behavior/diagnose/series APIs and CLI commands.&lt;/li&gt;&lt;li&gt;Native Health and Local Network views, live bandwidth columns and menu-bar health/rates.&lt;/li&gt;&lt;li&gt;Web Health, Network Map and Local Network views.&lt;/li&gt;&lt;li&gt;Local API/static-serving hardening.&lt;/li&gt;&lt;li&gt;Expanded portable test suite from 13 to 21 Python tests plus web/plist/demo/Swift syntax gates.&lt;/li&gt;&lt;/ul&gt;</content></entry>
  <entry><title>Nivora 0.1.0</title><id>tag:zyvorai.github.io,2026:nivora-0.1.0</id><updated>2026-10-13T00:00:00Z</updated><link href="https://github.com/zyvorai/zyvor-nivora/releases/tag/v0.1.0"/><content type="html">&lt;ul&gt;&lt;li&gt;Initial Nivora product repository.&lt;/li&gt;&lt;li&gt;Per-app flow model with NetworkExtension JSONL ingestion, &lt;code&gt;nettop&lt;/code&gt; and &lt;code&gt;lsof&lt;/code&gt; fallback.&lt;/li&gt;&lt;li&gt;DNS, route, interface and VPN inventory.&lt;/li&gt;&lt;li&gt;FluxVM integration against the local REST API.&lt;/li&gt;&lt;li&gt;SQLite history and Network Time Machine events.&lt;/li&gt;&lt;li&gt;Observe/allow/block rules with live preview and signed extension enforcement path.&lt;/li&gt;&lt;li&gt;Local investigator.&lt;/li&gt;&lt;li&gt;Vytrix-style dependency-free dashboard.&lt;/li&gt;&lt;li&gt;Native SwiftUI app, filter-data provider and filter-control provider.&lt;/li&gt;&lt;li&gt;&lt;code&gt;nivoractl&lt;/code&gt;, &lt;code&gt;launchd&lt;/code&gt; installer, CI and test suite.&lt;/li&gt;&lt;/ul&gt;</content></entry>
</feed>
