1) What Hayabusa Is
Hayabusa is designed to be a command center for infrastructure. Whether you are an individual or an organization, Hayabusa is built to cater to both. Create or configure routers, switches, virtual machines, physical servers, containers, applications, and more. Communicate with devices and preserve their configurations as text files over the internet — then monitor security and performance afterward.
With security, simplicity, and education in mind, Hayabusa aims to simplify your infrastructure and teach along the way. It may look like a program with many features to learn, but it is built on commonly used open-source tools, with documentation here to help you start quickly. In fact, there may be features in Hayabusa that you never need to use — and that is by design.
/docs page is the product manual (concepts and workflows). API route browsing lives on /api. Deep architecture notes for operators also live in the repo under docs/ (for example Image Nest and ZTP/controller architecture).2) Mental Model
Hayabusa can be simplified to a few layers:
- Application: the program itself — UI, APIs, Ansible/OpenTofu, dashboards, and helpers doing the work.
- Network access: the physical means of connecting — cables, NICs, Ethernet ports, radios.
- Transport: protocols that move data. The two major ones are TCP and UDP, each suited to different programs and reliability needs.
- Internet: connecting one host to another with IP addressing. When hosts connect across the world, that is the internet as we know it.
You will use all of these in one way or another. Network access, transport, and internet all involve data moving from one device to another. Those three layers form your connection to Hayabusa and Hayabusa’s ability to talk to your computers, routers, switches, and controllers. The application layer does the work before communicating out through the others.
In basic terms, this is how all parts of the platform communicate. Even advanced areas — security monitoring, telemetry, drone control, SCADA, and pentesting — combine these same layers.
3) First-Time Onboarding
Hayabusa Core
Hayabusa Core is the publicly accessible portion of Hayabusa — the brain and middleman for nearly every action. Anyone can sign in and view their networks and hosts, or those of an organization they belong to. Without Core there is no development, security, or other major function.
If you are reading this, you have likely already signed in. Hayabusa currently supports Google, Slack, Discord, and Microsoft logins. That is intentional: it serves users from many platforms and avoids unnecessary risk and liability from storing password-based user credentials on our side.
Walkthrough: map → DevOps → Fleet console
- Click Foundry in the top navigation, then configure virtual workstations. That opens the Workstations page — a map of your infrastructure. On a Hayabusa instance on your LAN, discovery can automatically map computers, routers, and switches on the local network.
- Open the left side navigation (available on most pages) and click DevOps. That takes you toward infrastructure development and the Fleet page — open Fleet.
- On Fleet, the left column lists identified hosts. For first login that may look sparse; the important surface for most users is the console in the center.
The console is organized by use-case categories. Its heart is Ansible and OpenTofu — two major open-source DevOps tools:
- OpenTofu — declarative infrastructure: “you must look like this; if apply cannot succeed, roll back.”
- Ansible — procedural configuration: “you should do/have/include this; do not roll everything back on a single failure.”
You write text files that define how infrastructure is created and modified. Those programs are explained further below; for onboarding, know that this is where you define intent before changes run.
To the right, another organization of your networks appears — useful when a controller spans multiple separated networks. You can list hosts by network, zoom the map, and see last-known OpenTofu configuration where available.
Below, a draggable panel embeds the Workstations map so you can watch infrastructure as you edit. In some cases workspace edits show up in near real time.
4) Workstations
Open Foundry → configure virtual workstations. Workstations is a clearer, less-cluttered view of mapped infrastructure — a bird’s-eye map for telemetry, planning, and specialized views without the full Fleet console chrome.
During onboarding you saw Fleet as the DevOps command surface. Workstations is the companion map: same world of hosts, focused on visibility and modes rather than every craft action at once.
How to use it effectively
- Treat the map/diagram as operational context, not the sole source of truth.
- Confirm host identity with multiple fields (IP, hostname, type, ownership).
- Refresh host data before sensitive actions.
The telemetry drawer supports per-host or per-link troubleshooting: freshness, RTT/loss/jitter, top talkers, and threshold alerts. Set thresholds per environment (lab, staging, production) rather than one global default.
Path Trace and Baseline Compare help rapid triage: trace checks likely forwarding path; baseline compare shows topology drift in the current window. Baseline compare is in-memory for speed; durable history can be added later if compliance needs it.
4.1) Views Menu, Telemetry, and Map Modes
Click Views (top-left of the map) to switch modes. The telemetry pill stays centered so health stays visible. Available views include: underlay, overlay, observability, diagram, robotics viewer, NVIDIA ISAAC, disasters, weather, SCADA, and air traffic. That list is long on purpose — enterprise teams split roles, and you may never need every view.
Diagram
Diagram is a planning canvas for current infrastructure and future changes with others. Add candidate servers, networks, and more; export and later import XML when you need to save work. If it looks familiar, you have likely used draw.io / diagrams.net — this uses that open-source lineage. Either tool works for planning and visualization.
Overlay
Overlay shows how regional hub connections relate to the central command path — the control plane for sites and branches. In an overlay network you reach infrastructure through a control node (the “puppet master”). On https://hayabusa.tracedroute.net you are on the central command server. That sits upstream of a regional hub or self-hosted Core/controller on a LAN, which in turn sits upstream of the devices you create and configure.
Hierarchy (top → bottom): central server → regional hub / self-hosted instance → devices under management.
Underlay
Underlay is the view of links between switches, routers, and hosts on a LAN. Use it to troubleshoot performance — for example, a PC with buffering while streaming: compare bandwidth or errors on that host’s switch link versus peers, or spot a misconfigured switch.
Observability (map view)
Shows graphs of metrics scraped from infrastructure once collectors and dashboards are in place (often with InfluxDB/Grafana). You typically install or enable scrape/agent pieces as you configure hosts — see Grafana / Prometheus / InfluxDB below.
Robotics Viewer
Uses MAVLink, MAVROS, MAVSDK, and ROS2 for robotics control and programming. Enter vehicle and camera IPs where applicable, plan flights, and watch vehicles on the map. Map controls support pan-to-drone, destinations, waypoints, and toggles for air vehicles, fleets, simulation, and saved routes. Deep detail is later in this manual under SCADA / PLC / ROS2.
Other views (quick map)
- World Map / geographic context — distributed fleet awareness.
- SCADA — industrial HMI/controller context (FUXA).
- NVIDIA ISAAC — remote connector to your own GPU Isaac deployment.
- Disasters / weather / air traffic — situational layers for operators who need them.
Recommended operator flow
- Start in World Map or Diagram to find the host or system.
- Use Overlay for application/control-path impact.
- Use Underlay when loss, jitter, or L2/L3 adjacency needs explaining.
- Open Observability, Robotics, SCADA, or ISAAC only when that domain is the task.
4.2) Ansible & OpenTofu Workspace
The Ansible & OpenTofu workspace is the tenant-scoped infrastructure-as-code area from Workstations and Fleet. Personal and organization workspaces are separated; organization write access depends on membership and permissions.
Recall the onboarding distinction: OpenTofu is strongly declarative (“must”); Ansible is procedural (“should”). Both are edited as text under your workspace and run through Hayabusa’s approved workflows — ideally drafted with the AI assistant, then reviewed by you.
Console View
Command-oriented: edit files as text, run approved Ansible/OpenTofu workflows, sync OpenTofu state into inventory, and review output. Best for repeatable operations and exact commands.
Graphical View
A FileZilla-style manager for the same workspace — same tenant-scoped APIs as the console:
- Path bar — current path and quick navigation.
- Left tree — folders such as
ansible/,OpenTofu/,ztp/,bare-metal-ztp/, andopenPLC/. - Right list — name, type, size, modified time.
- Preview/editor — inspect and edit text files in-browser.
- Transfer area — upload/move results and recent status.
Graphical file actions
- Create folders and files; preview/edit/save text; rename; delete (with write access).
- Upload by dragging from the desktop; move by dragging onto another folder.
Security model
Workspace APIs validate paths server-side. Absolute paths, traversal, NUL bytes, and symlink escapes are rejected. Uploads are size-limited and written only under the tenant root. Read-only org members can inspect but not mutate.
Relevant APIs include /api/devops-iac/ls, /api/devops-iac/file, /api/devops-iac/mkdir, /api/devops-iac/mv, /api/devops-iac/rm, /api/devops-iac/upload, /api/devops-iac/run, and OpenTofu state sync endpoints.
4.3) OpenPLC Workspace Directory
Each personal and organization workspace includes an openPLC/ tree — a first-class home for PLC projects beside Ansible and OpenTofu. Use it to keep IEC programs, libraries, and generated artifacts under the same tenant scope as your IaC.
Directory layout
openPLC/programs/— IEC 61131-3 projects, Structured Text, ladder/exports, controller sources.openPLC/generated/— generated exports and build artifacts.openPLC/libraries/— reusable function blocks and support libraries.openPLC/README.md— tenant-local instructions seeded by Hayabusa.
OpenPLC Editor in the container
OpenPLC Editor is installed under /opt/openplc-editor with launcher /usr/local/bin/openplc-editor; MatIEC is under /opt/openplc-editor/matiec. Edit in Graphical View, then use console/container workflows to open, generate, or export as your environment requires.
Tenant separation
openPLC/ lives inside the resolved workspace root — personal and organization trees do not mix unless you deliberately copy files. Pair with the PLC Viewer (§12) for live reads/writes; keep write approval discipline the same as any other guarded control action.
5) Fleet
Fleet is the multi-host operations surface — answering “which systems?” rather than “this one system.” Use it for rollout groups, online/offline posture across many nodes, inventory anomalies, Incoming/ZTP claim, and the central Ansible/OpenTofu console from onboarding.
Layout
- Left column — discovered, claimed, or pending hosts (and Incoming when a controller is connected).
- Center console — categorized craft workspace (Ansible, OpenTofu, ZTP trees, and related tools).
- Right / map — network-oriented layout, zoom, and last-known OpenTofu configuration where available.
Best use cases
- Segmenting rollout groups and comparing posture across many nodes.
- Claiming Incoming devices after controller discovery / ZTP seek.
- Running approved Ansible/OpenTofu jobs against scoped targets after LAN Approve when a controller holds secrets/media.
5.1) "Incoming"
Zero-touch provisioning allows a view of hosts "calling out" via certain ports and protocols for their first-time configuration. This allows users to see the hosts calling out, recognize which vendor and model the instance is, and provide it a "recipe" or first-time configuration if it's not already applied.
How to use it
- Open Fleet and select the target host.
- Open the host console action.
- Use Apache Incoming for the remote session.
- Switch to PLC Viewer when you need controller protocol work.
5.2) Network Console
Zero-touch provisioning allows a view of hosts "calling out" via certain ports and protocols for their first-time configuration. This allows users to see the hosts calling out, recognize which vendor and model the instance is, and provide it a "recipe" or first-time configuration if it's not already applied.
How to use it
- Open Fleet and select the target host.
- Open the host console action.
- Use Apache Incoming for the remote session.
- Switch to PLC Viewer when you need controller protocol work.
5.3) Embedded Views
Zero-touch provisioning allows a view of hosts "calling out" via certain ports and protocols for their first-time configuration. This allows users to see the hosts calling out, recognize which vendor and model the instance is, and provide it a "recipe" or first-time configuration if it's not already applied.
How to use it
- Open Fleet and select the target host.
- Open the host console action.
- Use Apache Incoming for the remote session.
- Switch to PLC Viewer when you need controller protocol work.
6) Networking
Networking is where overlay, tunnel, and tenant isolation are monitored and controlled — the transport and internet layers from the mental model (§2), made operable in the UI.
When diagnosing incidents, prioritize: identity scope → tunnel status → route/selector correctness → host reachability and latency. That order prevents false conclusions from stale or out-of-scope sessions.
Subsections in this category
- 6.1 WireGuard + Headscale — mesh overlay.
- 6.2 IPsec — classic/interop tunnels.
- 6.3 Tenant VPC / Subnet Allocation — private CIDR ownership.
6.1) WireGuard + Headscale
WireGuard provides encrypted transport. Headscale provides self-hosted coordination and identity for mesh networks. Together they support operator-managed overlay connectivity between Core, regional hubs/controllers, and managed devices.
Interpret overlay status with underlay evidence. A tunnel can be “up” while service quality degrades due to jitter or loss beneath it — use map overlay health coloring and link telemetry together before changing peer config.
Operator checklist
- Check server/client (or Headscale) status before troubleshooting endpoints.
- Confirm tenant / namespace assignment matches the intended organization or user scope.
- Verify expected peers appear in host/peer lists.
- If quality is bad but the tunnel is up, switch to Underlay (Workstations) and Path Trace before rotating keys.
6.2) IPsec
IPsec supports tunnel scenarios that need selector-based or interoperability-oriented connectivity (site-to-site, partner networks). It often complements mesh overlay workflows rather than replacing them.
Validate three dimensions independently: IKE/session establishment, selector correctness, and application reachability. Successful IKE does not guarantee selector accuracy; selector accuracy does not guarantee firewall allowance.
When to prefer IPsec vs WireGuard mesh
- IPsec — peer requires classic IPsec/IKEv2, strict selectors, or existing enterprise VPN standards.
- WireGuard + Headscale — operator-managed mesh, modern clients, simpler key/identity coordination inside Hayabusa.
6.3) Tenant VPC / Subnet Allocation
Hayabusa can allocate tenant private address realms from a configured pool and persist assignments. That creates deterministic ownership of private CIDR space per user or organization so overlays and tunnels do not accidentally collide.
How to operate safely
- Validate proposed CIDRs before assignment (size, RFC1918 fit, no overlap).
- Avoid overlap with existing tenant realms and with underlay LAN ranges you still need to reach.
- Document ownership of each assigned block (org/user, purpose, date).
- After change, verify routing/overlay peers still reach expected hosts.
7) Zero Touch Provisioning (ZTP)
ZTP automates first contact so blank or factory devices enter service with a consistent baseline — DHCP/PXE on the site LAN, config fetch from the controller, then claim and follow-on OpenTofu/Ansible from Core.
When DHCP controls appear in the UI, treat enablement as a controlled network event. An unintended DHCP server can conflict with existing address assignment on a shared segment. Use a change window and confirm you own the broadcast domain first.
Recommended flow
- Prepare baseline templates (and Image Nest media if you need Windows/Linux install artifacts).
- Review pending/discovered devices in Fleet Incoming before claim.
- Apply provisioning and validate post-state.
- Record deviations and update templates.
/ztp/fetch live on the Hayabusa Controller. Hayabusa Core orchestrates claim, GitOps, and OpenTofu/Ansible after LAN Approve — it does not bind customer-LAN DHCP on the hub. With a controller branch selected, the UI rewrites ZTP/DHCP API calls to /api/my-controller/ztp/* (status, config, interfaces, leases, start/stop, pending-devices).7.1) Image Nest — Windows & Linux install media
Image Nest is a Controller feature (open it from the connected controller UI at /image-nest). You bring a legal Windows or Linux ISO; Hayabusa never redistributes Microsoft media. Nest banks dated artifacts and publishes hydrate placeholders such as <<IMAGE_NEST:latest-win11-stripped>> for OpenTofu/Ansible on LAN Approve.
Deploy targets on the Image Nest page
Works for Windows and Linux ISOs. Pick a target first — the banked file type changes with the target:
| Target | Windows output | Linux output | Use for |
|---|---|---|---|
| Bare metal | Bootable ISO | Bootable ISO | ZTP / PXE / USB physical install |
| Hypervisor media | install.wim (+ empty qcow2 stub) |
Banked ISO | OpenTofu / KVM attach as install media |
| Bootable disk | virt-install → bootable qcow2 (needs KVM tools on controller) |
ISO + qcow2 stub | Proxmox / KVM guest disk |
| Hyper-V | Bootable convert → VHDX |
ISO + empty VHDX stub | Hyper-V guests |
| VMware | Bootable convert → VMDK |
ISO + empty VMDK stub | VMware guests |
Buttons and actions
- Strip & bank / Full bank — bake for the selected deploy target (optional package strip).
- Publish ISO as-is — bank the uploaded medium for bare metal without a strip bake.
- Guest initial config — hostname, admin user, password, disk size for Windows Autounattend when baking Bootable / Hyper-V / VMware disks.
- → VHDX / → VMDK on a bank row — convert an existing banked disk with
qemu-img. - Hayabusa hand-off — write tfvars for Core; the controller never runs OpenTofu.
How this ties to OpenTofu / ZTP
- Upload ISO on the controller Image Nest page.
- Choose target → Strip/Full bank (or Publish ISO as-is).
- In OpenTofu/Ansible commit placeholders only, e.g.
source_image = "<<IMAGE_NEST:latest-win11-bootable>>". - Queue the job from Hayabusa; on LAN Approve the controller hydrates nest refs (same pattern as secrets).
- Core applies OpenTofu/Ansible with resolved paths.
latest-win11-hypervisor / latest-win11-bootable.8) Security and Pentesting
Security workflows in Hayabusa support authorized assessment and risk discovery — not unscoped scanning of networks you do not own. Pair every scan or SECops playbook with scope control, approval, and a remediation path.
What lives where
- Fleet / DevOps workspace — SECops Ansible trees and related playbooks under your tenant workspace (often with packaged defaults that GitOps does not overwrite).
- Controller — site-local secrets and LAN Approve for jobs that need vault material or Image Nest media.
- Observability / alerts — evidence after changes; optional AI suggest-from-alert paths when enabled.
Responsible workflow
- Define scope and written approval (systems, CIDRs, time window).
- Run low-impact reconnaissance first.
- Escalate to active checks only where authorized.
- Convert findings to tracked remediation tasks; re-test after fixes.
9) Integrations
Integrations connect Hayabusa to outside services and workflows — chat login providers, Git (GitOps), observability backends, Incoming, vendor ZTP, and optional AI providers. Every integration should have an owner, expected behavior, and a rollback plan.
POST /api/my-controller/integrations/sync (pull then push of integrations.bundle.*). The Integrations UI Sync button uses that path; builder app upserts also best-effort push so the site appliance keeps the same bundle.Common integration families
- Identity — Google, Slack, Discord, Microsoft sign-in (Core).
10) AI and User Keys
Hayabusa supports user-scoped AI keys for assistant functionality. Store keys in your controller and use the SECRET NAMES on Hayabusa core. Never put secrets on Hayabusa core.
- Use least-privilege keys where possible.
- Avoid sending secrets in prompts.
- Validate AI outputs before operational use.
What the embedded AI helper now understands
The floating Hayabusa AI Assistant is aware of the main operating surfaces and should guide users to the correct page, tab, and safety boundary. It can explain Workstations map views, the Ansible/OpenTofu console and Graphical View, tenant-scoped openPLC/ directories, Observability, SCADA/PLC workflows, ROS2 robotics tooling, ZTP/controller roles, and Image Nest deploy targets.
Recommended prompts
- "Show me how to switch from my personal observability view to my organization Grafana view."
- "How do I upload an OpenPLC project folder into the Graphical View?"
- "Which PLC protocols can I read or write from the PLC Viewer, and what safety checks apply?"
- "Where do I find the Robotics Viewer and what ROS2 tools are installed?"
11) Grafana, Prometheus, and InfluxDB
Hayabusa exposes the observability stack through authenticated subpath proxies: /grafana/, /prometheus/, /influxdb/, and the Hayabusa dashboard at /observability. The goal is to keep Grafana, Prometheus, and InfluxDB usable without asking operators to leave Hayabusa or bypass tenant controls.
How the stack is separated
- User scope: personal metrics, dashboards, datasources, and retention settings are associated with the signed-in user context.
- Organization scope: organization metrics and dashboards are associated with the selected organization context and require the user to be a member of that organization.
- Grafana organization separation: Hayabusa provisions or selects Grafana organizations and passes the appropriate auth proxy headers so users land in the expected Grafana org.
- Prometheus query separation: Hayabusa rewrites tenant-aware PromQL queries where appropriate so metric results are filtered to the selected user or organization scope.
- InfluxDB bucket separation: InfluxDB bucket access and retention are tied to the tenant bucket model used by Hayabusa's observability bootstrap logic.
Using the Observability page
- Open Observability from the top navigation or use the Observability map view on Workstations.
- Confirm whether the page is in personal or organization context. If you are a member of organizations, use the scope selector to switch deliberately.
- Use the Grafana panel for dashboards, Prometheus for metric queries and targets, and InfluxDB for time-series bucket inspection where enabled.
- Check the status cards before troubleshooting a dashboard. A dashboard issue may be caused by a downstream service, proxy path, datasource, or tenant scope mismatch.
Grafana
Grafana is used for dashboarding, alert visualization, datasource exploration, and organization-scoped views. Hayabusa proxies Grafana under /grafana/ and adjusts subpath behavior so assets, API calls, avatars, and dashboard links resolve under Hayabusa instead of the Grafana container root.
- Use Grafana dashboards for high-level operational views.
- Use Explore for ad hoc metric questions.
- Use the Hayabusa scope selector before opening Grafana when you need personal vs organization separation.
- If a panel looks empty, confirm datasource scope, time range, and tenant labels before assuming data loss.
Prometheus
Prometheus stores and queries operational metrics. Hayabusa proxies Prometheus under /prometheus/ and supports tenant-aware query behavior for user and organization separation. Prometheus is best for instant/range queries, target health, rule evaluation, and low-level metric debugging.
- Use the Prometheus query UI when you need raw metric evidence.
- Use target health to distinguish scrape failures from dashboard problems.
- Use scalar queries such as
time()normally; Hayabusa avoids turning scalar expressions into invalid tenant-filtered expressions.
InfluxDB
InfluxDB is used for time-series buckets and data that fits the Influx model. Hayabusa proxies InfluxDB under /influxdb/, rewrites root-relative UI paths for static assets, and exposes health/setup calls through the Hayabusa auth boundary.
- Use InfluxDB for bucket-level inspection and time-series workflows configured by operators.
- Use tenant bucket names and retention settings to understand where data lives.
- If the Influx UI appears to onboard unexpectedly, verify the configured admin token and bucket/bootstrap state.
Retention and administration
Retention can be controlled globally by administrators and per allowed tenant context. Admin retention updates are exposed on the Administration page and through /api/admin/observability/retention. User/org observability settings are exposed through /api/observability/retention.
Troubleshooting observability
- Static asset 404s: verify requests include the Hayabusa subpath such as
/grafana/,/prometheus/, or/influxdb/. - Empty Grafana dashboards: confirm tenant scope, datasource provisioning, and the dashboard time range.
- Prometheus query errors: check the raw PromQL and whether the query is tenant-label compatible.
- Influx setup/onboarding screens: confirm
PEREGRINE_INFLUX_ADMIN_TOKEN, bucket existence, and service health. - Live websocket warnings: confirm whether the upstream feature is enabled and whether the browser request is being made through the correct Hayabusa path.
12) SCADA, PLC, ROS2, and NVIDIA Isaac
Hayabusa now includes industrial-control and robotics surfaces for lab, emulator, and authorized real-system workflows. These tools are powerful and must be operated with explicit authorization and correct target scope.
SCADA viewer
The SCADA Workstations view embeds FUXA, an open-source browser-based SCADA/HMI screen builder. Use it when the operator task is about controller status, process visibility, protocol targeting, or SCADA-style context rather than general host infrastructure.
- Start in SCADA when working with controllers, plants, cells, lines, or emulator labs.
- Use FUXA for HMI screens, alarms, process visualization, and industrial-protocol presentation.
- Use it together with PLC Viewer for protocol-specific reads/writes.
- Use Observability alongside SCADA to correlate controller actions with metrics and host telemetry.
FUXA is installed inside the Hayabusa application container and started by /peregrine/start-server.sh when /opt/fuxa/server/main.js is present. It listens internally on FUXA_PORT (default 1881) and stores runtime data under PEREGRINE_FUXA_DATA_DIR (default /var/lib/peregrine/fuxa). Hayabusa exposes the embedded browser UI through the same-origin /fuxa/ proxy and exposes /api/scada/status so the SCADA view can show whether FUXA is reachable and where the browser-facing service is located. Protect the FUXA URL with network controls and FUXA/Hayabusa access policy; do not expose unrestricted write-capable SCADA screens to untrusted networks.
PLC Viewer
The PLC Viewer is available from the tabbed console surfaces on Fleet and Workstations. It supports unified PLC reads and controlled writes through Hayabusa APIs. Current protocol families include Modbus TCP, OPC UA, Siemens S7, Allen-Bradley CIP, Beckhoff ADS, Mitsubishi MC, and Omron FINS UDP, depending on installed driver availability.
Reading PLC data
- Open Fleet or Workstations and select the relevant host/controller context.
- Open the console window and select PLC Viewer.
- Select the protocol and enter the target host, port, address, register/tag/symbol, unit/device ID, and count/type fields required by that protocol.
- Click Read PLC and review the JSON result.
Writing PLC data
PLC writes are supported but guarded. The server requires the global plc_writes_enabled operator safety flag, and the user must explicitly confirm authorization in the UI for each write request. Write attempts are audited whether they succeed or fail.
- Confirm you own or are approved to control the target controller or emulator.
- Confirm admin policy allows PLC writes. In development images this can be controlled with
PEREGRINE_PLC_WRITES_ENABLEDand persisted safety policy. - Enter the write value(s), function code/tag/symbol, and protocol-specific addressing.
- Check I am authorized to write to this PLC.
- Click Write PLC and verify the result out of band before continuing.
Programming and OpenPLC
OpenPLC Editor and MatIEC support controller-program development workflows. Keep source files under the tenant-scoped openPLC/ workspace directory, edit them in Graphical View or console, and use OpenPLC tooling from the container when you need project editing or code generation.
Robotics Viewer and ROS2
The Robotics Viewer Workstations view is the robotics-oriented operating surface. ROS2 Humble tooling is installed in the Hayabusa container, including ros2, rosdep, colcon, and base ROS packages. Drone workflows use MAVLink as the vehicle protocol, MAVSDK for application-level drone APIs, and MAVROS when ROS2 topic/service bridging is needed.
edge.mavlink.*, edge.sdr.*, edge.adsb.*). Core remains the cockpit — the browser still calls /api/robotics/*; Core proxies transmit/capture and re-streams audio/telemetry. If the bound controller is offline, those paths fail closed (controller_required) instead of opening hub-local radio.- Use
ros2 node listto identify active nodes when attached to a ROS2-enabled environment. - Use
ros2 topic listandros2 topic echofor topic discovery and message inspection. - Use
colconfor ROS2 workspace builds when source packages are available in the container or mounted workspace. - Use PX4 SITL or ArduPilot SITL for first tests before attaching to real aircraft.
- Keep robot credentials, network keys, and vendor tokens out of prompts and source control.
/api/robotics/status reports local availability of ROS2, MAVLink/PyMAVLink, MAVSDK, MAVROS, and simulator tooling so operators can tell the difference between a missing tool and a target connectivity issue.
ArduPilot SITL and PX4 SITL simulation
The Robotics Viewer includes a simulator control panel and flight visualizer. The current image bundles ArduPilot Copter SITL through dronekit-sitl; PX4 SITL and PX4 vehicles are supported as external MAVLink endpoints such as udp://:14540. Both simulator and real-vehicle telemetry use the same MAVLink helper, so the visualizer, heartbeat, position, battery, attitude, GPS, and guarded-command behavior are consistent.
- Open Workstations, expand Views, and select Robotics Viewer.
- In the simulator panel, leave ArduPilot Copter SITL selected, optionally set a home latitude/longitude, and click Start SITL.
- Click Use SITL endpoint. Hayabusa fills the MAVLink endpoint, starts telemetry, and updates the attitude/position visualizer.
- For PX4, start PX4 SITL outside Hayabusa and connect to its MAVLink endpoint, commonly
udp://:14540. PX4 is not bundled in this image. - Use MAVSDK or MAVROS from ROS2 workflows when you need higher-level application APIs or ROS2 topic/service bridging.
dronekit-sitl, provide the ArduPilot/DroneKit license notices and corresponding source access/source offer for those components. This obligation applies to the GPL simulator components, not to Hayabusa's separate proprietary application code.MAVLink/MAVSDK connection workflow
The Robotics Viewer includes a MAVLink endpoint form for real telemetry connections. Hayabusa stores the endpoint per user or organization scope, starts a tenant-scoped MAVLink helper process, and reads live heartbeat, position, attitude, GPS, battery, status text, command acknowledgements, parameters, mission state, and richer flight data through PyMAVLink. MAVSDK remains installed for higher-level drone application workflows, while the UI uses the MAVLink helper for reliable cross-worker telemetry.
- Start a simulator or approved vehicle gateway. Common examples: PX4 SITL
udp://:14540, ArduPilot TCPtcp://127.0.0.1:5760, UDP outboundudpout://vehicle-gateway:14550, or serial radio/dev/ttyUSB0:57600. - Open Workstations, expand Views, and select Robotics Viewer.
- Enter the MAVLink endpoint and an optional vehicle label.
- Click Test heartbeat for a one-shot connectivity check, or Connect telemetry to start the background helper.
- Watch the live telemetry panel for heartbeat, position, battery, attitude, GPS, status text, and command messages.
- Use guarded commands only for owned/authorized simulators or vehicles. Commands require an authorization checkbox and exact text confirmation.
Hayabusa Native GCS, ADS-B, and Remote ID
The Robotics Viewer is Hayabusa's native ground-control station for licensed-safe drone operations without bundling Qt/QGroundControl or GPL Mission Planner. It includes a drone world map for ownship MAVLink position, ADS-B aircraft decoded by dump1090, and Remote ID drone tracks ingested from an OpenDroneID/DroneScanner-style bridge. It is designed for tenant-scoped telemetry, operator safety gates, audit logs, and browser-native mission/control workflows.
- Native flight deck: Hayabusa supports flight mode changes, parameter fetch/edit, command ACK display, mission download, mission clear, guarded
goto, and guarded waypoint mission upload through the active MAVLink helper. - Optional QGroundControl / Mission Planner: Hayabusa can still store tenant-scoped launcher URLs for external or Incoming-hosted ground-station desktops. These are optional compatibility tools, not bundled dependencies. QGroundControl requires Qt licensing care; Mission Planner is GPLv3 and should remain external/separate.
- dump1090 / RTL-SDR: the container includes
rtl-sdranddump1090-mutabilitywhere installed. Hayabusa can start/stop a tenant-scoped dump1090 background receiver bound to loopback, reads its aircraft JSON, and plots decoded ADS-B aircraft. - OpenDroneID / DroneScanner / OpenSpyglass-style Remote ID: Hayabusa exposes a tenant-scoped ingest endpoint for decoded Remote ID tracks. A local bridge process can listen on an Alfa Wi-Fi card or Bluetooth receiver, decode Remote ID packets, and POST normalized track JSON into Hayabusa.
- Safety controls: writes such as mode changes, parameter edits, mission clear,
goto, arm/takeoff/land/RTL, and mission upload require explicit authorization and confirmation text. - Multi-drone fleet: save multiple vehicles (id, label, MAVLink endpoint, camera URL) per tenant with
/api/robotics/fleet. Each vehicle gets its own MAVLink helper session. Passvehicle_idon connect, commands, missions, and native actions, or choose the active vehicle in the Robotics Viewer fleet panel. - Gamepad / joystick: the browser Gamepad API sends MAVLink
MANUAL_CONTROLto the active vehicle after guarded confirmation textenable joystick. Use only on authorized aircraft in a suitable manual flight mode with a visual observer and emergency recovery plan. - Cameras: configure per-vehicle
camera_urlvalues (HTTP/HTTPS MJPEG, RTSP, HLS, or embed). Hayabusa proxies MJPEG/RTSP through/api/robotics/camera/<vehicle_id>/streamfor same-origin viewing. Do not embed credentials in camera URLs.
NVIDIA Isaac remote integration
The NVIDIA ISAAC Workstations view connects Hayabusa to a remote NVIDIA Isaac server that you provide and license separately. This is designed for environments where Hayabusa handles fleet, ROS2, MAVLink, SCADA, observability, and policy context while NVIDIA Isaac / Isaac Sim / Isaac ROS handles GPU-heavy robotics workloads such as simulation, perception pipelines, synthetic data, model evaluation, and Omniverse-based visualization.
How to connect a remote Isaac server
- Deploy and license NVIDIA Isaac, Isaac Sim, Isaac ROS, Omniverse Streaming, CUDA, GPU drivers, and any NVIDIA container/runtime pieces on your GPU host according to NVIDIA's terms.
- Expose an authenticated HTTPS Isaac or streaming UI endpoint to the Hayabusa operator network. Do not put usernames, passwords, API keys, or tokens in URLs.
- Open Workstations, expand Views, and select NVIDIA ISAAC.
- Enter the Isaac server URL, optional streaming/UI URL, optional ROS bridge URL such as
ws://isaac-host:9090, ROS domain ID, and operator notes. - Click Save and test. Hayabusa stores the connection in the current user or organization scope and checks remote reachability.
- Use the embedded frame or Open remote link to access the remote Isaac UI, then bridge telemetry/control through your authorized ROS2/MAVLink network.
The backend endpoint /api/isaac/status supports GET and POST. It stores URLs per tenant scope, rejects URLs with embedded credentials, rejects loopback/link-local/metadata targets, and reports reachability without storing secrets.
Open-source and commercial-use posture
The recommended stack is open source and can be used commercially, but some pieces carry copyleft obligations if you modify and redistribute them.
- FUXA: MIT licensed core project; commercial use is permitted with notice retention.
- ROS2: mostly Apache-2.0/BSD/MIT by package; verify package-specific notices for any extra ROS packages you add.
- MAVLink: generator is LGPLv3-family, while generated protocol code includes a permissive MIT exception.
- MAVSDK: BSD-3-Clause; commercial use is permitted with license/disclaimer retention.
- MAVROS: triple-licensed BSD/GPLv3/LGPLv3; use the license path that matches your distribution model.
- ArduPilot SITL / DroneKit SITL: ArduPilot is GPL-3.0-or-later. Hayabusa treats it as a separate unmodified simulator process controlled over MAVLink. Redistributing the image requires GPL notices/source availability for ArduPilot/DroneKit SITL, but this separation does not require publishing Hayabusa source code.
- PX4: BSD-3-Clause and commercially usable with notice retention. PX4 is supported as an external MAVLink endpoint and is not bundled in the current image.
- QGroundControl: dual Apache-2.0/GPLv3. The Apache-2.0 path is compatible with proprietary deployments but requires appropriate Qt licensing if you build/distribute it that way; GPL builds should remain separate/external if you do not want copyleft obligations on a combined work.
- Mission Planner: GPLv3. Hayabusa treats it as an external/separate ground station and does not link it into Hayabusa.
- dump1090 / rtl-sdr: useful for passive ADS-B receiving. Common dump1090 packages are GPL lineage; Hayabusa consumes JSON output over a process/data boundary.
- OpenDroneID: Apache-2.0 reference receivers and core libraries are suitable for commercial integration with notice retention. Verify the license of any specific DroneScanner/OpenSpyglass desktop build before bundling it.
- OpenPLC Editor / MatIEC / Beremiz lineage: commercial use is permitted, but GPL/copyleft terms can require source availability for modified redistributed tooling. PLC programs you author are not automatically forced open by using the editor.
- NVIDIA Isaac: not bundled by Hayabusa. Commercial use depends on NVIDIA's current license terms for the specific Isaac/Omniverse/CUDA/GPU components you deploy remotely.
Relevant APIs
/fuxa/: same-origin embedded FUXA UI proxy used by the SCADA view./api/scada/status: FUXA service URL, reachability, and license summary for the SCADA view./api/robotics/status: ROS2 and drone tooling availability for Robotics Viewer./api/robotics/mavlink/status: current tenant-scoped MAVLink endpoint, helper-process status, and latest telemetry snapshot./api/robotics/mavlink/test: one-shot heartbeat test for a MAVLink endpoint./api/robotics/mavlink/connect: save the endpoint and start the MAVLink telemetry helper./api/robotics/mavlink/disconnect: stop the active MAVLink telemetry helper./api/robotics/mavlink/command: guarded arm/disarm/takeoff/land/return-to-launch/goto command endpoint./api/robotics/mavlink/native: native GCS endpoint for parameter fetch/edit, flight mode change, mission download, and mission clear./api/robotics/mavlink/mission: guarded waypoint mission upload endpoint./api/robotics/ground-control/status: tenant-scoped QGroundControl, Mission Planner, dump1090, and Remote ID bridge launcher/status endpoint./api/robotics/airspace/status: combined ownship, ADS-B, Remote ID, and mission map data endpoint./api/robotics/remote-id/ingest: decoded Remote ID track ingest endpoint for OpenDroneID/DroneScanner bridge clients./api/robotics/adsb/status,/api/robotics/adsb/start, and/api/robotics/adsb/stop: tenant-scoped dump1090 receiver control and status endpoints./api/robotics/sitl/status: current tenant-scoped ArduPilot SITL process status, endpoint, and compliance summary./api/robotics/sitl/start: start tenant-scoped ArduPilot Copter SITL with a validated home latitude/longitude./api/robotics/sitl/stop: stop the active tenant-scoped ArduPilot SITL process./api/isaac/status: tenant-scoped remote NVIDIA Isaac connection save/test/status endpoint./api/plc/drivers/status: installed driver and write-support status./api/plc/read: unified multi-vendor read endpoint./api/plc/write: guarded multi-vendor write endpoint./api/plc/modbus/read: compatibility endpoint for Modbus TCP read workflows.
13) Profile
Profile is where you verify identity, provider linkage, personal settings, AI keys, and usage/cost context. If actions seem unexpected — wrong org data, missing keys, denied APIs, or unexpected token spend — check Profile first.
How the page is organized
Profile uses categories and tabs so related controls stay grouped (identity, API/AI keys, notifications/preferences, and usage/billing). Use the tabs rather than scrolling one long list.
Typical tasks
- Confirm logged-in identity and linked providers (Google, Slack, Discord, Microsoft).
- Manage personal AI keys used by the assistant and alert-suggest flows.
- Review usage and costs for your account (included tokens, spend, overage signals).
- Adjust preferences that affect notifications or observability scope.
14) Organizations
Organizations provide scope boundaries and team ownership. Structure orgs to mirror real operational responsibility (site, product line, customer) — not arbitrary folders.
What org scope affects
- Fleet/Workstations inventory visibility and claim rights.
- Ansible/OpenTofu and
openPLC/workspace trees (physically separate from personal). - Observability Grafana org / Prometheus tenant filters / Influx buckets.
- Robotics, Isaac, and other tenant-scoped connections.
Operator guidance
- Grant least privilege; separate read-only members from writers.
- Document who owns each org and which controllers/sites attach to it.
- Never run destructive playbooks until the org selector matches the intended blast radius.
15) Administration
Administration controls global platform behavior — safety toggles, identity posture, and operational visibility. Treat admin actions as reversible control-plane operations with a defined owner and verification signal.
Before changing global toggles, define: expected blast radius, rollback condition, and how you will know it worked (login success rate, tunnel health, host freshness, or scrape health).
Subsections in this category
- 15.1 Safety Controls — sign-in, Headscale, bans/allowlists, throttling.
- 15.2 Manual Identity Controls — local/fallback auth paths.
- 15.3 Logs and Operational Visibility — audit and accountability.
15.1) Safety Controls
Safety controls exist to protect platform integrity during incidents, abuse events, and maintenance windows.
What each control does
- Sign-in toggle: temporarily blocks new sign-ins (preserves emergency paths configured by policy).
- Headscale toggle: disables/reenables overlay control behavior during network investigations.
- Bandwidth throttling controls: operator-level constraints for controlled behavior.
- Bans: prevent specific identities from accessing the platform.
- Allowlists: define explicit identities permitted under tighter posture.
How to operate safety controls
- Define incident objective first (containment, recovery, investigation).
- Apply minimum required control change.
- Document who changed what and why.
- Monitor service behavior.
- Revert controls when safe and record closure notes.
15.2) Manual Identity Controls
Manual identity tooling supports controlled local auth workflows and admin fallback when federated providers (Google, Slack, Discord, Microsoft) are unavailable or policy requires an emergency path.
When to use it
- Provider outage or misconfiguration blocks normal sign-in.
- Policy requires a temporary local account for a controlled maintenance window.
- Incident response needs a known-good admin identity independent of IdP health.
Recommended usage
- Enable only when required by policy or incident response.
- Use strong credentials; rotate after high-risk windows.
- Disable fallback paths when no longer needed; record who enabled them and why.
- Prefer federated login for day-to-day users to reduce password custody on Core.
15.3) Logs and Operational Visibility
Admin-level visibility includes audit history, safety actions, and network-related event logs. Use logs for accountability and root-cause analysis — not only for “when something breaks.”
Minimum logging discipline
- Record actor, action, target, and reason for safety and identity changes.
- Correlate changes with incident timelines (and with Grafana/Prometheus when metrics moved).
- Store enough context for post-incident review; avoid logging secrets or raw credentials.
- Review PLC write audits and robotics command audits after any guarded write session.
16) Architecture and Runtime
Hayabusa Core runs as a containerized application (Flask/gunicorn in typical deploys) composed of templates, static assets, and route handlers. Controllers are separate site appliances (API, DHCP/PXE edge, secrets, Image Nest, LAN Approve). Operational behavior is always code + persisted state.
When debugging, verify both: “Is the code path deployed?” and “Is runtime state what we think it is?” Map telemetry is sampled asynchronously and rendered as periodic snapshots — freshness and sampler heartbeat distinguish a quiet network from a stale pipeline.
Core vs Controller (one diagram in words)
- Core — public/brain: identity, Fleet/Workstations, GitOps agent, OpenTofu/Ansible orchestration, observability proxies.
- Controller — site edge: dnsmasq DHCP/PXE,
/ztp/fetch, secrets vault, Image Nest, job hydrate on LAN Approve. - Git — optional Advanced source of truth; not the LAN boot pipe.
docs/ZTP-AND-CONTROLLER-ARCHITECTURE.md and docs/IMAGE-NEST-AND-WINDOWS-IMAGES.md.17) Persistence and State
Hayabusa persists key operational state to disk volumes: identity linkage, tenant network allocations, safety policy, user-scoped encrypted materials, workspaces, and controller data (leases, nest bank, vault).
Know which controls survive restarts and which are session-derived. Some diagnostics (immediate baseline compare, transient path highlights) are intentionally runtime-scoped for speed. If compliance needs durable history, add explicit storage policy rather than assuming every visualization is persisted.
Examples
- Persists — org memberships, tenant CIDRs, Image Nest bank on the controller volume, Grafana orgs/datasources (as provisioned).
- Session / ephemeral — browser session cookies, some map overlays, in-memory baselines.
18) Common Runbooks
Runbook: New operator onboarding
- Verify identity and role assignment (Profile + org selector).
- Walk Workstations → Fleet → Networking in read-only mode (§3–§6).
- Execute one approved low-risk action (refresh, inspect, AI draft review).
Runbook: Contain suspicious account activity
- Apply account ban/allowlist controls (Admin safety).
- If needed, disable new sign-ins temporarily — keep break-glass admin.
- Review audit and network logs.
- Document and restore normal posture once resolved.
Runbook: Tenant subnet issue
- Review tenant allocation records (§6.3).
- Validate overlap constraints and expected ownership.
- Apply corrected assignment with validation.
- Confirm connectivity and overlay/IPsec behavior.
Runbook: Overlay tunnel slow but not down
- Open Workstations Overlay and inspect link health color/state.
- Open Underlay and confirm whether adjacent links show elevated jitter/loss.
- Run Path Trace between affected source/destination IPs.
- Use telemetry drawer top talkers to identify likely traffic contributors.
- Apply smallest corrective action first (policy, route, selector, or rate control), then re-verify health trend.
Runbook: Bank Windows/Linux media then create a VM
- On the controller, open Image Nest (
/image-nest) and upload a legal ISO (§7.1). - Choose deploy target (bare metal / hypervisor media / bootable / Hyper-V / VMware) and Strip or Full bank.
- Commit OpenTofu with
<<IMAGE_NEST:…>>placeholders only. - Queue from Hayabusa; LAN Approve on the controller; apply on Core.
- Verify guest boot; remember empty disk stubs are not a runnable OS.
19) Troubleshooting
Symptom: Page looks outdated or broken
- Hard refresh browser assets (Ctrl/Cmd+Shift+R).
- Verify auth session and route existence.
- Check whether Core was restarted after template/image changes.
Symptom: Host list or network status inconsistent
- Refresh discovery and overlay states.
- Validate safety toggles and Headscale/WireGuard posture.
- Inspect recent admin actions in logs.
- Confirm organization selector matches the inventory you expect.
Symptom: Access unexpectedly denied
- Check role/scope context (Profile + org).
- Verify active bans/allowlist policy.
- Confirm admin identity matching policy inputs.
Symptom: Link health appears severe but throughput is high
- Check whether loss or jitter thresholds are tripping critical-state logic.
- Confirm telemetry freshness and sampler heartbeat before acting.
- Correlate with top-talker behavior and path trace results.
- Treat this as quality degradation, not capacity success.
Symptom: OpenTofu/Ansible cannot find an image or secret
- Confirm placeholders are still in git (not real paths/passwords).
- Confirm the job was LAN Approved on the controller that holds the vault/Nest bank.
- Check Image Nest registry aliases (§7.1) and secret names on the controller.
Symptom: /docs section missing after an update
- Hard refresh; open the section hash directly (e.g.
/docs#image-nest). - Confirm Core image/template includes the latest
docs.html(DEV_SYNC or rebuild).
20) Best Practices
- Separate hosts (using Opentofu) and their data (Ansible) to facilitate easy recreation, replication, and to protect against user error.
- Test before deploying Consider testing scripts before deploying. You can always put a controller in a test environment to test on low-risk hosts first.
- Make scope explicit before every change (user vs org, site vs lab).
- Prefer staged rollouts over broad immediate actions; use OpenTofu plans and Ansible check modes where available.
- Least privilege for accounts, org roles, AI keys, and all credentials.
- Placeholders only in git — prefer
{{ hayabusa_secret:KEY }}or<<SECRET:KEY>>(plus<<IMAGE_NEST:…>>); hydrate on LAN Approve. - Auditability by default — who changed what, when, and why.
- Environment-specific runbooks — this manual is general; your CIDRs, change windows, and owners are local.
- Use AI to draft, humans to approve — especially for OpenTofu, Ansible, PLC, and MAVLink commands.
- Empty Nest stubs are not OS images — know ISO vs WIM vs bootable disk vs VHDX/VMDK before attaching media.
21) FAQ
Does this page include API route listings?
No. This page is operational and conceptual. Use /api for route lists and endpoint details.
Can new users become productive from this guide?
Yes — start with §3 onboarding, then Ansible/OpenTofu (§4.2) and Fleet (§5). Teams should still keep local runbooks for environment-specific standards.
What is the fastest way to avoid mistakes?
Verify identity scope and target scope (org, host, CIDR, PLC/drone) before executing changes. Prefer dry-runs and LAN Approve for secrets/media.
Do I need a Hayabusa Controller?
Core alone supports sign-in, maps, and crafting. A controller on the site LAN is required for DHCP/PXE ZTP, Image Nest banking, and LAN Approve hydration of secrets and nest refs.
OpenTofu vs Ansible — which do I use?
OpenTofu when the resource must converge to a declared state (often VMs/cloud/objects). Ansible when you need procedural configuration with softer failure semantics. Many stacks use both.
Where do Windows/Linux ISOs get prepared?
On the controller Image Nest page (/image-nest). See §7.1 for deploy targets (bare metal, hypervisor media, bootable disk, Hyper-V, VMware).
Why is my Grafana dashboard empty?
Confirm personal vs organization scope, datasource provisioning, time range, and tenant labels — then check Prometheus targets. See §11.
How do I contact Tracedroute support?
Two options: open an in-app support ticket on Service Orders, or email support@tracedroute.net.
22) Derivatives
In Hayabusa, a derivative is any reusable operational unit that originates from core capabilities without becoming a separate product. Derivatives reuse Hayabusa’s identity, network, governance, and operational model.
Examples
- Workspace templates and runbook variants (Ansible/OpenTofu packs).
- Policy overlays (safety, allowlists, tenant conventions).
- Integration adapters (GitOps layouts, vendor ZTP packs).
- Tenant-specific workflow packs and deployment conventions.
- Image Nest bake recipes and Autounattend profiles reused across sites.
How to manage derivatives well
- Keep each derivative versioned, scoped (user/org/site), and owned.
- Document where it diverges from base platform expectations.
- Prefer placeholders for secrets and Image Nest refs so packs stay portable.
- Before adoption, verify security assumptions, identity scope, network boundaries, and rollback strategy.
23) About
Hayabusa is an infrastructure command center built around open-source building blocks — Ansible, OpenTofu, WireGuard/Headscale, Grafana/Prometheus/Influx, OpenPLC, ROS2/MAVLink tooling, and more — with a unified identity, network, and governance model for individuals and organizations.
The platform is designed so you may never use every surface. Start from onboarding (§3), learn Ansible/OpenTofu (§4.2), then deepen into the categories that match your role (networking, ZTP/Nest, observability, SCADA/robotics, admin).
For reusable packs built on top of Hayabusa, see §22 Derivatives. For bundled component licenses, see §24 Open Source notices.
24) Open Source & Third-Party Notices
Hayabusa ships with and invokes many open-source components across SECops, DevOps, ZTP, observability, remote access, and industrial/robotics tooling. This section surfaces license and trademark disclosures so operators can redistribute or audit compliance correctly.
Download the full notices file, or read the embedded summary below. Component-specific boundaries (for example ArduPilot SITL as a separate process) are also called out in domain sections such as SCADA / PLC / ROS2.
Download THIRD_PARTY_NOTICES.mdHayabusa integrates open-source tools for SECops (RustScan, tcpdump, Zeek, Metasploit, ZAP, NetExec, Nuclei, Prowler, Trivy, BloodHound.py), DevOps / IaC (Ansible, OpenTofu, dnsmasq), observability (Grafana, Prometheus, Prometheus Pushgateway, InfluxDB, Telegraf, node_exporter), security ops (Wazuh, Shuffle SOAR — AGPL; MongoDB is Shuffle’s private SSPL dependency), mesh VPN (Headscale, Tailscale client — WireGuard-based), IPsec (strongSwan), and lab automation. Vendor names such as Cisco or Juniper appear only to identify compatible devices — see trademarks below. Hayabusa itself is proprietary software.
Nmap / Wireshark / tshark
Hayabusa SECops images do not install Nmap, Wireshark, or tshark. Port scans use RustScan (MIT, greppable mode — no nmap handoff); capture uses tcpdump (BSD-style) with optional Zeek (BSD-3-Clause).
SECops components at a glance
| Tool | Typical license | Attribution | Redistribute in image |
|---|---|---|---|
| RustScan | MIT | Yes | Yes with notices |
| ieee-data (OUI) | Data / package terms | Yes | Yes (data) |
| tcpdump / libpcap | BSD-style | Yes | Yes with notices |
| Zeek | BSD-3-Clause | Yes | Yes with notices |
| Metasploit Framework | BSD-3-Clause | Yes | Yes with notices |
| OWASP ZAP | Apache-2.0 | NOTICE | Yes |
| NetExec | BSD-2-Clause | Yes | Yes |
| Nuclei | MIT | Yes | Yes |
| Prowler | Apache-2.0 | NOTICE | Yes |
| Trivy | Apache-2.0 | NOTICE | Yes |
| BloodHound.py | MIT | Yes | Yes |
Mesh VPN & IPsec
| Component | Typical license | In Hayabusa |
|---|---|---|
| Headscale | BSD-3-Clause | Self-hosted mesh control server |
Tailscale (tailscale / tailscaled) | BSD-3-Clause (client) | WireGuard-based mesh data plane |
| strongSwan (IPsec) | GPL-2.0+ | Site-to-site / remote-access VPN (charon) |
WireGuard® is a trademark of Jason A. Donenfeld. Hayabusa does not ship standalone wireguard-tools (wg).
Tailscale® is a trademark of Tailscale Inc.; Hayabusa is not affiliated with Tailscale Inc. Using Tailscale Inc.'s hosted coordination service (if enabled) is subject to their terms in addition to the open-source client license.
Observability (metrics & monitoring)
| Component | Typical license | In Hayabusa |
|---|---|---|
| Grafana | AGPL-3.0 | Dashboard UI and alerting; accessed via authenticated Hayabusa proxy (/grafana/) with user / organization separation. Unmodified upstream image grafana/grafana:11.2.2. |
| Prometheus | Apache-2.0 | Time-series metrics and PromQL queries; global TSDB retention set by administrator |
| Prometheus Pushgateway | Apache-2.0 | Short-lived job and agent metric ingestion for Prometheus scraping |
| Prometheus Alertmanager | Apache-2.0 | Alert routing (prom/alertmanager:v0.27.0) |
| InfluxDB | MIT (InfluxDB License v2 for server) | Metrics API and per-tenant buckets with retention capped by administrator |
| Telegraf | MIT | ZTP / bare-metal agent install and host metric collection (optional recipe) |
| Prometheus node_exporter | Apache-2.0 | Host metrics collection (optional ZTP recipe) |
Grafana® is a trademark of Grafana Labs. Prometheus® is a trademark of The Linux Foundation. InfluxDB® and Telegraf™ are trademarks of InfluxData, Inc. Hayabusa is not affiliated with those vendors.
Security ops (Wazuh & Shuffle)
| Component | Typical license | In Hayabusa |
|---|---|---|
| Shuffle (SOAR) | AGPL-3.0 | Proxied at /shuffle/ from unmodified GHCR images (digests pinned in docker-compose.security.yml). UI/API on loopback only. |
| MongoDB 4.4 | SSPL-1.0 | Private Shuffle dependency only — not exposed to users; no published host ports. |
| OpenSearch (Shuffle) | Apache-2.0 | Shuffle search backend (internal network) |
| Wazuh stack | GPLv2 (components) | Proxied at /wazuh/; separate upstream containers |
AGPL source offer (Grafana & Shuffle)
Hayabusa runs unmodified upstream Grafana and Shuffle container images and proxies them after login. We do not ship patched Grafana/Shuffle program source in this product. Charging for Hayabusa (including features that use these tools) is permitted under AGPL; AGPL applies to Grafana and Shuffle themselves, not to Hayabusa’s separate proprietary application code.
Corresponding Source for the AGPL programs we operate is available from upstream (and on request):
| Program | Version / pin | License | Corresponding Source |
|---|---|---|---|
| Grafana | grafana/grafana:11.2.2 |
AGPL-3.0 | github.com/grafana/grafana @ v11.2.2 · AGPL-3.0 text |
| Shuffle backend | GHCR digest sha256:d4a5d2bf1f956955b68b099ba1c38997e4b257b2518215e0427f433515bea5c8 |
AGPL-3.0 | github.com/Shuffle/Shuffle · match image digest in compose · AGPL-3.0 text |
| Shuffle frontend | GHCR digest sha256:4d700a6f0822cb081822bd2fa6c633080553bdd4313aed2c4bdce75b87e82836 |
AGPL-3.0 | github.com/Shuffle/Shuffle · match image digest in compose |
If upstream links are unavailable (air-gap) or you need a source bundle for the exact tags/digests on your deployment,
contact support@tracedroute.net and reference your Hayabusa image / compose tag.
Operator helper: scripts/gpl-source-offer.sh (lists Grafana/Shuffle/Mongo source pointers as well).
Full file: download THIRD_PARTY_NOTICES.md below.
DevOps & infrastructure
| Component | Typical license | In Hayabusa |
|---|---|---|
| Ansible (ansible-core) | GPL-3.0-or-later | Playbooks, inventory, ZTP / Craft |
OpenTofu (tofu) | MPL-2.0 | OpenTofu/, state sync |
| dnsmasq | GPL-2.0+ | ZTP DHCP / leases |
| Pixiecore | Apache-2.0 (upstream) | ProxyDHCP / PXE |
Terraform® is a trademark of HashiCorp. Hayabusa uses OpenTofu for infrastructure-as-code.
GPL source (we ship binaries; get source here)
Hayabusa images include GPL packages such as strongSwan (IPsec), ansible-core, dnsmasq, ClamAV, and FFmpeg. Matching source is available from Ubuntu and upstream projects — we direct you to those sources rather than bundling tarballs in the image.
| Package | Reference version | Source |
|---|---|---|
| strongSwan | 5.9.5-2ubuntu2.8 |
Ubuntu source (Jammy) ·
GitHub ·
apt-get source strongswan=5.9.5-2ubuntu2.8
|
| ansible-core | 2.17.14-1ppa~jammy | Ansible PPA · apt-get source ansible-core |
| dnsmasq | 2.91-0ubuntu0.22.04.1 |
Ubuntu source (Jammy) ·
apt-get source dnsmasq
|
| ClamAV | 0.103.12+dfsg-0ubuntu0.22.04.1 | Ubuntu source · clamav.net |
| FFmpeg | 7:4.4.2-0ubuntu0.22.04.1 | Ubuntu source · ffmpeg.org |
Confirm versions in your container: dpkg -l strongswan ansible-core dnsmasq clamav ffmpeg.
Full text and other licenses: download THIRD_PARTY_NOTICES.md below.
Vendor names (routers, switches, firewalls)
Labels such as Cisco, Juniper, Arista, Palo Alto Networks, Fortinet, HPE, Aruba, Ubiquiti, MikroTik, VMware, and Proxmox are trademarks of their respective owners. Hayabusa uses them only to describe device categories, ZTP recipes, OUI/DHCP hints, and playbook targets in your lab.
Hayabusa is not affiliated with or endorsed by those vendors unless you have a separate agreement. OUI vendor strings come from ieee-data (IEEE public listings) for identification only.
Authorized use only
Open-source licenses permit use and redistribution of the software under their terms. They do not authorize scanning or attacking systems without permission from the owner.
This information is for transparency and is not legal advice. Consult qualified counsel for your product and distribution model.
Full text: THIRD_PARTY_NOTICES.md in the Hayabusa distribution (download below).
Standalone page: /open-source-notices