0.2.9 - 2026-08-17
Warning
Grendel now ships two binaries. grendeld runs the server and the privileged discovery commands, grendel is the API client for everything else. Server commands move: grendel serve -> grendeld serve, grendel discover -> grendeld discover. Both binaries are installed by the rpm/deb packages and shipped in the release tarball.
NICs now hold a single FQDN. Comma separated names are no longer supported. The migration keeps the first name on each interface and logs every name it drops, run grendel db dump prior to upgrade
The $.nic.HostNameIndex template function was removed. Provision templates using it will need to be updated.
Some commands were renamed: auth user show -> auth user list, auth role show -> auth role list, bmc job show -> bmc job list.
api:
- added
GET /v1/grendel/version - fixed API server shutdown handling
- marked the Redfish arrays nullable in the OpenAPI spec
store:
- capped the read only connection pool to stop large reads from exhausting CPU, tunable with
database.max_read_conns - fixed the read only connection not actually being read only
- split NIC CIDRs into separate address and prefix columns
- improved and indexed MAC address query
- dropped comma separated FQDNs from NICs
dns:
- added a query timeout,
dns.query_timeout, defaulting to 2s so abandoned queries stop holding database connections - answer SERVFAIL on a timeout query rather than dropping the response and forcing the client to retransmit
provision:
- fixed an empty
provision.templates_dirkilling the provision server
cli:
- split the CLI into the
grendeldserver and thegrendelclient, which builds without cgo - added
grendel version, which prints the client and server version over the API - added service selection to
grendeld serve, either as args or through--services, with a matchingservicesconfig option - moved
discover lldptogrendel lldp, which no longer demands--subnet - reworked various
listcommand outputs with a custom table formatter - renamed the
showsubcommands ofauth user,auth roleandbmc jobtolist - non disruptive command like
grendel node listimplyallby default - made usage strings consistent
- allowed force quitting an edit command after a failed save
- fixed API requests not being cancelled with the CLI context
- fixed sub service flags such as
--dhcp-listennot working fromserve - fixed
--listenoverriding per service listen flags that were set explicitly - fixed
bmc configure importargument handling - fixed
bmc job clearappending the nodeset to the job list - fixed
--tagfiltering instatusandstatus nodes - fixed
bmc firmware upgrade --clear-jobs - fixed API error messages in
node editandimage edit - fixed
auth user addquitting on theqkeystroke and its TUI focus running out of range - fixed the off by one cursor in the
auth role editTUI
misc:
- added a Dockerfile and a GoReleaser container build
- added an example
configs/docker-compose.yml - fixed SIGTERM shutdown handling
- fixed the database directory permissions set by the package postinstall script
0.2.8 - 2026-07-01
Warning
Provision templates using these variables will need to be updated: provision.root_password & admin_ssh_pubkeys -> provision.extra_vars.
The provision templates directory is no longer hardcoded, set with: provision.templates_dir = /var/lib/grendel/templates
api:
- added the ability to listen on both UNIX and TCP sockets
- changed web toggle from on tcp listen to
api.web_ui - fixed last NIC deletion
cli:
- added node & image
addcommands - added
node interfacesubcommand - reworked edit workflow to drop back into buffer on error
- restricted immutable id field changes in edit commands
- fixed invalid TOML parsing silently failing
- added user created roles in db export and import
provision:
- moved & renamed rootpw & admin_ssh_pubkeys variables into
provision.extra_vars - removed liveimg references
- added indent template function
- added ipxe script override with
ipxetemplate name - added template hot reloading
docs:
- added API & Web UI setup page
- added boot image page
- added boot template page
frontend:
- fixed multi node per u spacing in rack page
- fixed verify switch spacing in image form
- fixed job page node names
misc:
- bumped iPXE to latest commit
- added missing config variables to sample TOML
- defaulted RPM & DEB installs to use file based DB
- added client ip to dns request debug logs
0.2.7 - 2026-05-25
- api: fixed image deletion not working
- added node names as links in firmware update & job pages
- added open job page to firmware update action list
- fixed root component scroll
- added
node listandimage listcommands - migrated frontend to pnpm
- fixed multiple UI scrollbars
- added nodeset parsing to UI
- fixed dialog overflows
- fixed write timeout only increased for http api listener
- fixed CLI auth token help text
- fixed DNS returning NXDOMAIN for AAAA queries when an A record exists
- added prometheus service discovery tag passthrough
- update deps
0.2.6 - 2026-02-23
- frontend: deprecated floorplan page
- frontend: added rack page - groups nodes with the tag rack=foo
- frontend: added using search parameters for data table filter state
- frontend: added animated loading component
- frontend: fixed component reload on window refocus with Actions sheet
- frontend: fixed cursor type when hovering many clickable items
- frontend: changed api client to heyapi/openapi-ts
- frontend: updated deps
- added oxc for linting and formatting
- merge gofish changes from #116
0.2.5 - 2025-11-24
- Fix firmware update table select all checkbox only selecting one page at a time
- Fix large API requests would timeout and return an empty body
- Fix bmc power commands no longer send bootOption: None if no boot option is passed
0.2.4 - 2025-10-28
- Bump dependencies
- ui: modified job table to display multiple nodes at once
- ui: added Dell firmware update table & actions
- ui: updated theme switcher to use a radio group
- cli: added Dell firmware check
- cli: added Dell firmware upgrade
- api: added api.dev config option to bypass RBAC
0.2.3 - 2025-08-09
- Fix rename node bug
- Fix ipv4 forward resolution bug
0.2.2 - 2025-07-28
- Fix provision template store
- Add support for rendering configs from netbox
- Add inventory search UI which supports barcode scanning of serial & asset tags
- Fix ipv4 reverse resolution bug
0.2.1 - 2025-04-28
- added custom role support
- fixed generated api token expiry
- added ability to reset your own password
- added CLI for managing users
- added CLI for managing roles
- removed auth requirement for signout route
- bumped frontend packages
- fixed bmc power command
- added snponly x86_64 to dhcp boot handler
- fixed mtu not returning from DB
- changed default EFI x86_64 binary to snponly
- added dns forwarding
- update docs to use uv and add api docs
0.2.0 - 2025-03-24
- Deprecated buntdb, backend is now sqlite
- replaced frontend with react SPA
- allow searching for nodes without a tag
- added boot image editing
- added redfish node queries
- added initial redfish telemetry reporting
- added redfish job querying
- added redfish job clearing
- added search by mac address, ip address, & fqdn
- added link to open bmc page to rack page
- added view options to rack page
- replaced API server with fuego for automatic openapi spec generation
- added JWT auth
- allow filtering by nodeset and tags
- replaced client with ogen client generated from the openapi file
- added remote authenticated CLI access
- added the ability to use nodeset = all to filter nodes by --tags
- added checking current directory for a grendel.toml file
- added reboot bmc command
- changed bmc status command to return the serial number
- temporarily deprecated bmc update command
- renamed hosts -> nodes
- fixed sqlstore boot image verify
- fixed sqlstore user updatedAt
- fixed sqlstore not removing the last initrd or template
- github.com/insomniacslk/dhcp
- github.com/tidwall/gjson
- github.com/segmentio/ksuid
- github.com/mattn/go-sqlite3
- github.com/labstack/echo/v4
- github.com/golang-migrate/migrate/v4
- github.com/golang-jwt/jwt/v5
- github.com/stmcginnis/gofish
- github.com/spf13/cobra
- github.com/spf13/viper
- github.com/bits-and-blooms/bitset
- go4.org/netipx
- initial workflows
- added go generate & markdown files to explain client generation
- added air config file
- added actrc file for testing workflows locally
- added swagger api explorer
0.1.0 - 2024-12-19
- Move store interface to new package
- Refactor store tests and benchmarks
- Add new backend store which uses sqlc and sqlite
- Add db dump/restore command
- Add user/list and restore API endpoints
- Add new config option dbtype
0.0.15 - 2024-11-22
- Fix: frontend - inventory export download
- Feat: frontend - reworked inventory export variables
- Feat: frontend - added inventory import page
0.0.14 - 2024-09-24
- Update default grendel.toml config
- Feat: provision - added custom PDU prometheus service discovery endpoint
- Feat: frontend - added Power page to display panel and circuit information. required pdu tags: panel:1,circuit:1-3
- Feat: frontend - rack page now renders 0u PDUs
- Feat: cli - added bmc firmware and job commands to allow firmware updates via the Redfish API
- Feat: cli - added auto-downloading of the Dell update catalog & firmware updates
- Fix: bmc - power command now functions correctly without an --override set
0.0.13 - 2024-08-26
- Update retryablehttp, gjson, ipxe deps
- Feat: frontend - added CSV export with GO template support
- Feat: tors - added SONiC queries
- Feat: tors - added Arista EOS queries
- Fix: frontend - prevent initial admin user from needing to relog after registration
- Fix: bmc - concurrent map writes on BMC queries
- Fix: nfpm - use updated sample toml file rather than .default file
0.0.12 - 2024-08-05
- Update echo, fiber deps
- Fix provision - tftp segfault when starting with bind port permission error
- Feat: provision - added "proxmox" tag DHCP 250 response code for Proxmox Automated Installs
- Fix: frontend - segfault when non nodeset hostname is added
- Fix: frontend - rack selection checkboxes not preserving state after submitting an action
- Fix: frontend - sqlite session storage
- Feat: fronend - added Nodes page
- Feat: frontend - added Bond support in Host page
- Feat: frontend - added status page
0.0.11 - 2024-02-27
- Add prometheus service discovery.
- Add support for bonded nics
- Add arm64 pxe booting
- Add Dell SONiC ZTP
- Remove Dell OS9 BMP support
0.0.10 - 2024-01-15
- Fixed "Disabled" user role not respecting auth middleware
- Fixed bulk adding nodes other than cpn || srv not having the correct bmc fqdn prefixes
- Improved notifications UI
- Improved rack actions UI
- Improved user table UI
- Added import host by JSON in UI
- Overhauled BMC package
- Deprecated IPMI support
- Added ClearSel action
- Added host power options & overrides
- Added bmc power cycle
- Improved redfish error handling
- Improved import sys config settings
- Improved bmc CLI
- Added CLI autoconfigure command
- Updated Tailwind to v3.4.0
- Updated gofish to v0.15.0
0.0.9 - 2023-11-29
- Add Web UI (@jafurlan)
- Fix bug in reverse resolution with ip masks
- Fix bug in reverse resolution with multiple names
- Add tags to status output
- Add network segment status command
- Add support for Dell ONIE and iDRAC auto config
- Allow multiple FQDN comma separated
- Add support for NVIDIA/Mellanox zerotouch
- Add support for Arista zerotouch deployment (ZTD)
0.0.8 - 2023-02-27
- Add DHCP multi-interface support #12
- Add support for Dell Zero-touch deployment (ZTD) of switches. The necessary DHCP options are added if a host is tagged with "dellztd" or "dellbmp" (to support older FTOS switches).
- Add support for serving image kernel/initrd assets over tftp
- Add subnet config settings to define gateway, dns, search domains and mtu. If a host IP falls in the subnet grendel will inherit these settings when offering dhcp leases.
- Add MTU and VLAN parameters to network interface json definitions.
- Fix incorrect padding in nodesets #20
- Add support for custom named provision templates
- Add
admin_ssh_pubkeysconfig option
- Add netmask prefix to IPs in json definitions. Changes the
NetInterface.IPtype fromnet.IPtonetip.Prefixwhich allows us to capture both the IP address and the network prefix. The raw IP stored in the json now has the following format:x.x.x.x/xx. This is a breaking change and will require a manual dump/restore of the grendel database. - Rename
dhcp.routerconfig option todhcp.gateway - Remove unused
provision.schemeconfig option
0.0.7 - 2022-06-09
- Fix bug in marshalling interface names
- Fix ubuntu autoinstall template
- Set root password in Ubuntu autoinstall template
- Add dhcp4 network configs for default nic
- Templatize the kernel command line for images
- Add support for translating butane configs to ignition
- Update ipxe to latest release
- Add rpm/deb package building
0.0.6 - 2021-10-25
- Add support for kickstarting both uefi and legacy bios nodes from the same kickstart template based on tags
- Clean up status command
- Randomize DNS server list in DHCP responses to distribute load
- Fix duplicate checking. Properly update hosts with same name
- Add delete host/image API and CLI
- Add check for duplicate host IDs
- Fix bug in delay and fanout
- Add support for cloud-init and Ubuntu autoinstall
- Add support for power/on off in CLI
0.0.5 - 2021-03-26
- Handle DHCPINFORM
- Add support for turning on/off logging for specific services
- Switch to using native go embed support in v1.16 for assets
- Add feature to allow boot images to set custom provision templates
- Add support for tagging hosts
- Refactor NodeSet api to support N-dim folding
- Add new status cli command for displaying basic status of nodes
0.0.4 - 2020-07-04
- Add boot image cli commands
- Add provision cli commands
- Add api endpoint cli flag
0.0.2 - 2020-07-02
- Allow variable interpolation in image command line
- Add support for codesigning boot images
- Switch to using Branca instead of JWT
- Require host to be set to provisioned in order to fetch boot assets.
- Add endpoint to unprovision host
- Switch to using openapi
- Add api endpoints for boot images
0.0.1 - 2020-02-17
- Initial release