Everyone registers their own
Each person adds their IP addresses (office, home) and SSH public keys (laptop, CI runner) with a short label. When a home IP changes, they update it themselves. The entry stays attached to the person.
Each person registers their IP addresses and SSH public keys. You decide which apply to which environment. Your firewall and servers read the result, so a rule always has a name next to it.
Each person adds their IP addresses (office, home) and SSH public keys (laptop, CI runner) with a short label. When a home IP changes, they update it themselves. The entry stays attached to the person.
Production, staging, the bastion host. Each one lists which entries apply. The CI runner's key goes to the deploy targets; a laptop key does not go to production. The list for each environment is what your infrastructure reads.
Copy it from the web app, export CSV or JSON, call the API, or use the Terraform data source to feed a security group or an authorized_keys file. OpsMinder keeps the list; your tools apply it.
Remove the person and their entries are flagged, with the environments they were in. The team gets the message, the exports and data source stop including them, and the firewall follows on the next apply. Same when someone replaces a laptop.
Free for one developer. €1 per seat a month after that.