i built a CLI because infomaniak didn't have one
I wanted to manage my domains from the terminal. Infomaniak didn't have a CLI. So I built one — DNS management, terraform-style sync, security audits, propagation checking, and more. Open source on PyPI.

it's 11pm. i'm SSHed into a server. i need to update a DNS record.
i open my phone browser. navigate to infomaniak's dashboard. log in. wait for 2FA. click through three menus. update one TXT record. close the browser.
the whole thing took 4 minutes for what should have been a 10-second command.
the problem
infomaniak is a great swiss cloud provider. i use them for domains, hosting, email, and kDrive. swiss data sovereignty, competitive pricing, good infrastructure. but they didn't have a CLI.
in 2026. a cloud provider. no CLI.
if you manage multiple domains across multiple projects (and i do — between side projects, client work, and homelab experiments), DNS management becomes a real workflow bottleneck. context switching from terminal to browser and back, every single time.
so i built one
pipx install infomaniak
that's it. infomaniak-cli wraps the Infomaniak API and gives you everything from the terminal.
first run:
infomaniak setup
the setup wizard opens the token page, validates your API key, checks which scopes are enabled, and saves the config. you never need the browser again.
what started as DNS management became... more
it started with basic DNS CRUD. but once the foundation was there, i kept adding features that i actually needed:
DNS management
infomaniak dns domains # list all domains
infomaniak dns records doruk.ch # list DNS records
infomaniak dns records doruk.ch --type CNAME # filter by type
infomaniak dns add doruk.ch A blog 93.184.216.34 # create a record
infomaniak dns update doruk.ch 12345 --target 1.2.3.4 # update a record
infomaniak dns delete doruk.ch 12345 # delete with confirmation
infomaniak dns search "vercel" # search across ALL domains
that last one — dns search — is the feature i use most. when you have 10+ domains and you need to find which ones point to a specific target, searching across all of them in one command is a lifesaver.
terraform-style DNS sync
this is probably the most powerful feature. define your desired DNS state in a JSON file, then sync:
infomaniak dns sync doruk.ch desired.json --dry-run
DNS sync plan for doruk.ch
+ 1 to create - 2 to delete 8 unchanged
Create:
+ A new-app → 198.51.100.1
Delete:
- CNAME old-cdn → old.cdn.example.net
- TXT _old-verify → verify=abc123
Dry run — no changes applied.
declarative DNS management. define what you want, see the diff, apply it. like terraform but for DNS records. you can also export, import, diff, clone, and backup DNS across domains.
security auditing
infomaniak dns audit
DNS Audit
────────
Scanning 10 domain(s)...
! No SPF record found — Email spoofing protection
→ legacy-site.com
! No DMARC record found — Email authentication policy
→ legacy-site.com
→ staging.org
Summary: 10 domains scanned
8 clean
2 with issues (3 total findings)
scans all your domains for missing SPF, DMARC, and DKIM records. because email security is one of those things everyone forgets until their domain gets spoofed.
propagation checking
infomaniak dns propagation doruk.ch
DNS Propagation: A doruk.ch
Resolver IP Result
────────── ────────────── ───────────
Google 8.8.8.8 76.76.21.21
Cloudflare 1.1.1.1 76.76.21.21
Quad9 9.9.9.9 76.76.21.21
OpenDNS 208.67.222.222 76.76.21.21
All resolvers agree. DNS is fully propagated.
no more "is DNS propagated yet?" anxiety. check against Google, Cloudflare, Quad9, and OpenDNS in one command.
domain monitoring
infomaniak domains --warn 60
lists all your domains with expiry dates and warns you if any are expiring within your threshold. because letting a domain expire is the kind of mistake you only make once.
beyond DNS
the CLI also covers:
infomaniak account— account overview and product summaryinfomaniak products— list all products, filter by service typeinfomaniak mail list— list mail hostings and mailboxesinfomaniak hosting list— list web hostingsinfomaniak drive list— list kDrive instancesinfomaniak status— service status overview--jsonflag on any read command for machine-readable output
what i learned
building CLIs is underrated as a learning exercise. you deal with:
- API design and error handling across dozens of endpoints
- UX in a constrained medium (no GUI, just text and tables)
- packaging and distribution (PyPI, CI/CD, versioning)
- scope creep that's actually useful (every feature exists because i needed it)
the biggest lesson: start with the simplest thing that's useful, then let real usage drive what gets built next. the DNS sync feature didn't exist in v1. it exists now because i got tired of manually reconciling records across environments.
try it
pipx install infomaniak
MIT licensed, open source, on PyPI.
github.com/peaktwilight/infomaniak-cli
build the tools you wish existed. if something annoys you three times, automate it. if the automation is useful to others, open-source it.