# Haltman ## Documentation - [Introduction](https://dev.haltman.io/introduction.md): Haltman.io is an open-source initiative focused on cybersecurity and privacy tooling. Explore our knowledge base covering OSINT tools, mail forwarding, and self-hosting guides. - [Quickstart](https://dev.haltman.io/quickstart.md): Get oriented quickly. Find the right section for your use case — whether you want to use our tools, our mail forwarding service, or self-host the entire stack. - [Features Overview](https://dev.haltman.io/features.md): Overview of all Haltman.io open-source projects and their core capabilities. - [Integrations & Community](https://dev.haltman.io/integrations.md): Connect with Haltman.io through GitHub, Telegram, and other channels. Explore how the projects integrate with external services. ## Open Source Tools - [ip-thc](https://dev.haltman.io/open-source/ip-thc.md): Fast CLI for DNS intelligence using the ip.thc.org public dataset. Supports Reverse DNS, Subdomain, and CNAME queries on 5.14 billion+ mapped domains. - [search-leaks](https://dev.haltman.io/open-source/search-leaks.md): OSINT CLI tool to query data breach/leak statistics by domain or email using public threat-intel APIs. Supports stdin and target lists, automatic type detection, forced modes, and structured output. - [reverse-whois](https://dev.haltman.io/open-source/reverse-whois.md): Golang CLI tool to perform Reverse WHOIS queries and enumerate domains whose WHOIS records contain specific search terms. Uses WhoisXML API. - [sub-alter](https://dev.haltman.io/open-source/sub-alter.md): OSINT CLI tool to query a commercial Domains/Subdomains Discovery dataset and enumerate domains and subdomains that match user-defined include/exclude patterns. - [brave-search](https://dev.haltman.io/open-source/brave-search.md): CLI tool for cybersecurity workflows that queries Brave Search API and extracts URLs from the results. Clean output, pagination support, rate limiting, retries, proxy support (HTTP / SOCKS5). ## mail-forwarding - [Get started](https://dev.haltman.io/get-started.md): Let's explain the explanation. - [Get Started (Self-Hosting)](https://dev.haltman.io/mail-forwarding-selfhost/get-started.md): Introduction to self-hosting the complete mail forwarding stack. Host and manage the service on your own infrastructure. - [mail-forwarding-core](https://dev.haltman.io/mail-forwarding-selfhost/mail-forwarding-core.md): Complete guide to installing the core mail forwarding stack: MariaDB, DNS, PostSRSd, Postfix, and OpenDKIM. A simple, abuse-aware, open-source solution. - [mail-forwarding-api](https://dev.haltman.io/mail-forwarding-selfhost/mail-forwarding-api.md): Node.js + Express API to manage mail forwarding aliases. Handles subscribe, confirm, unsubscribe operations with rate limiting and email confirmation. - [mail-forwarding-ui](https://dev.haltman.io/mail-forwarding-selfhost/mail-forwarding-ui.md): Next.js frontend for managing forwarding aliases via the Mail Forwarding API. Built with React, TailwindCSS, Radix UI, and ShadCN. - [Cleanup Cronjob](https://dev.haltman.io/mail-forwarding-selfhost/cleanup-cronjob.md): Optional maintenance cronjob to purge expired email confirmation records from the database. - [DNS Configuration](https://dev.haltman.io/mail-forwarding-selfhost/dns-configuration.md): How to correctly configure DNS for domains and subdomains that will use the mail forwarding service. Includes PTR, MX, SPF, DMARC, and database authorization. - [Get Started (User)](https://dev.haltman.io/mail-forwarding/get-started.md): Introduction to the free mail forwarding service at forward.haltman.io. This guide is for end users who want to create and manage email aliases. - [Create Alias (UI)](https://dev.haltman.io/mail-forwarding/create-alias-ui.md): How to create a mail forwarding alias using the web interface at forward.haltman.io. - [Create Alias (cURL)](https://dev.haltman.io/mail-forwarding/create-alias-curl.md): How to create a mail forwarding alias using the command line (cURL). - [Remove Your Alias](https://dev.haltman.io/mail-forwarding/remove-alias.md): How to remove an existing mail forwarding alias from forward.haltman.io. - [Add Your Domain](https://dev.haltman.io/mail-forwarding/add-domain.md): How to add your own root domain to the free mail forwarding service. ## API Reference - [Old Doc Detected ](https://dev.haltman.io/api-reference/get-domains.md): You are wrong here, go to https://dev.haltman.io/api-reference/get-api-stats - [Get aggregate platform counters](https://dev.haltman.io/api-reference/get-api-stats.md): No description found - [Get aggregate platform counters (compatibility mirror)](https://dev.haltman.io/api-reference/get-api-api-stats.md): No description found - [List active managed domains](https://dev.haltman.io/api-reference/get-api-domains.md): No description found - [List active managed domains (compatibility mirror)](https://dev.haltman.io/api-reference/get-api-api-domains.md): No description found - [Request alias creation confirmation email](https://dev.haltman.io/api-reference/get-api-forward-subscribe.md): Use address plus to, or name plus to with optional domain. - [Request alias removal confirmation email](https://dev.haltman.io/api-reference/get-api-forward-unsubscribe.md): No description found - [Confirm alias creation or removal via query token](https://dev.haltman.io/api-reference/get-api-forward-confirm.md): Executes the confirmation. Functionally identical to POST but accepts the token as a query parameter. - [Confirm alias creation or removal](https://dev.haltman.io/api-reference/post-api-forward-confirm.md): No description found - [Create a UI DNS request](https://dev.haltman.io/api-reference/post-api-request-ui.md): Proxies the request to the upstream check-dns service. - [Create an email DNS request](https://dev.haltman.io/api-reference/post-api-request-email.md): Same contract as /api/request/ui, but creates an EMAIL request upstream. - [Fetch DNS status or results for a target](https://dev.haltman.io/api-reference/get-api-checkdns-target.md): No description found - [Request API key creation confirmation](https://dev.haltman.io/api-reference/post-api-credentials-create.md): Accepts JSON body or query string. When both are present, the body takes precedence. - [Preview pending API key confirmation](https://dev.haltman.io/api-reference/get-api-credentials-confirm.md): No description found - [Confirm API key issuance](https://dev.haltman.io/api-reference/post-api-credentials-confirm.md): No description found - [List aliases owned by the API key](https://dev.haltman.io/api-reference/get-api-alias-list.md): No description found - [Get aggregate alias statistics for the API key owner](https://dev.haltman.io/api-reference/get-api-alias-stats.md): No description found - [List alias and confirmation activity](https://dev.haltman.io/api-reference/get-api-activity.md): No description found - [Create an alias for the API key owner](https://dev.haltman.io/api-reference/post-api-alias-create.md): Accepts JSON body or query string. When both are present, the body takes precedence. - [Delete an alias owned by the API key](https://dev.haltman.io/api-reference/post-api-alias-delete.md): Accepts JSON body or query string. When both are present, the body takes precedence. - [Request handle claim confirmation email](https://dev.haltman.io/api-reference/get-api-handle-subscribe.md): Initiates a handle claim. A confirmation email is sent to the destination address. The handle is only created after the token from the email is confirmed. Handles are permanent — once claimed, the name can never be reused, even after unsubscribe. - [Request handle unsubscribe confirmation email](https://dev.haltman.io/api-reference/get-api-handle-unsubscribe.md): Initiates handle unsubscribe. A confirmation email is sent to the handle's current destination. On confirmation, the handle stops routing but the name remains permanently reserved. Returns a generic accepted response regardless of whether the handle exists (anti-enumeration). - [Request domain disable confirmation email](https://dev.haltman.io/api-reference/get-api-handle-domain-disable.md): Initiates blocking a specific domain for the handle. A confirmation email is sent to the handle owner. Once confirmed, emails to handle@blocked-domain will be rejected at the SMTP level. - [Request domain enable confirmation email](https://dev.haltman.io/api-reference/get-api-handle-domain-enable.md): Initiates re-enabling a previously disabled domain for the handle. A confirmation email is sent to the handle owner. - [Confirm a handle action via query token](https://dev.haltman.io/api-reference/get-api-handle-confirm.md): Confirms a pending handle action (subscribe, unsubscribe, domain disable, or domain enable). The intent is determined automatically from the pending confirmation record. - [Confirm a handle action via request body](https://dev.haltman.io/api-reference/post-api-handle-confirm.md): No description found - [Confirm handle unsubscribe via query token](https://dev.haltman.io/api-reference/get-api-handle-unsubscribe-confirm.md): No description found - [Confirm handle unsubscribe via request body](https://dev.haltman.io/api-reference/post-api-handle-unsubscribe-confirm.md): No description found - [Confirm domain disable via query token](https://dev.haltman.io/api-reference/get-api-handle-domain-disable-confirm.md): No description found - [Confirm domain enable via query token](https://dev.haltman.io/api-reference/get-api-handle-domain-enable-confirm.md): No description found - [Disable a domain for a handle owned by the API key](https://dev.haltman.io/api-reference/post-api-handle-domain-disable.md): No description found - [Enable a domain for a handle owned by the API key](https://dev.haltman.io/api-reference/post-api-handle-domain-enable.md): No description found - [Create a handle for the API key owner](https://dev.haltman.io/api-reference/post-api-handle-create.md): Creates a handle immediately without email confirmation. The handle's destination is set to the API key owner's email. - [Unsubscribe a handle owned by the API key](https://dev.haltman.io/api-reference/post-api-handle-delete.md): Performs a logical unsubscribe: sets the handle to inactive and clears its destination. The handle name remains permanently reserved. - [Authenticate and issue session cookies](https://dev.haltman.io/api-reference/post-api-auth-sign-in.md): Sets __Host-access and __Host-refresh cookies on success. - [Resolve the current access session](https://dev.haltman.io/api-reference/get-api-auth-session.md): No description found - [Get a CSRF token for the current session family](https://dev.haltman.io/api-reference/get-api-auth-csrf.md): No description found - [Rotate the refresh token and issue a new access token](https://dev.haltman.io/api-reference/post-api-auth-refresh.md): No description found - [Revoke the current session family and clear cookies](https://dev.haltman.io/api-reference/post-api-auth-sign-out.md): Idempotent. If no valid session exists, the route still returns 200 and clears cookies. - [Revoke all sessions for the current user and clear cookies](https://dev.haltman.io/api-reference/post-api-auth-sign-out-all.md): Idempotent. If no valid session exists, the route still returns 200 and clears cookies. - [Start the password reset flow](https://dev.haltman.io/api-reference/post-api-auth-forgot-password.md): No description found - [Consume a password reset token](https://dev.haltman.io/api-reference/post-api-auth-reset-password.md): No description found - [Get the authenticated admin and current session](https://dev.haltman.io/api-reference/get-api-admin-me.md): No description found - [Smoke route to validate admin access](https://dev.haltman.io/api-reference/get-api-admin-protected.md): No description found - [List domains](https://dev.haltman.io/api-reference/get-api-admin-domains.md): No description found - [Create a domain](https://dev.haltman.io/api-reference/post-api-admin-domains.md): No description found - [Get a domain by id](https://dev.haltman.io/api-reference/get-api-admin-domains-id.md): No description found - [Update a domain](https://dev.haltman.io/api-reference/patch-api-admin-domains-id.md): No description found - [Soft-delete a domain](https://dev.haltman.io/api-reference/delete-api-admin-domains-id.md): No description found - [List aliases](https://dev.haltman.io/api-reference/get-api-admin-aliases.md): No description found - [Create an alias](https://dev.haltman.io/api-reference/post-api-admin-aliases.md): No description found - [Get an alias by id](https://dev.haltman.io/api-reference/get-api-admin-aliases-id.md): No description found - [Update an alias](https://dev.haltman.io/api-reference/patch-api-admin-aliases-id.md): No description found - [Soft-delete an alias](https://dev.haltman.io/api-reference/delete-api-admin-aliases-id.md): No description found - [List reserved handles](https://dev.haltman.io/api-reference/get-api-admin-handles.md): No description found - [Create a reserved handle](https://dev.haltman.io/api-reference/post-api-admin-handles.md): No description found - [Get a handle by id](https://dev.haltman.io/api-reference/get-api-admin-handles-id.md): No description found - [Update a reserved handle](https://dev.haltman.io/api-reference/patch-api-admin-handles-id.md): No description found - [Soft-delete a reserved handle](https://dev.haltman.io/api-reference/delete-api-admin-handles-id.md): No description found - [List bans](https://dev.haltman.io/api-reference/get-api-admin-bans.md): No description found - [Create a ban](https://dev.haltman.io/api-reference/post-api-admin-bans.md): No description found - [Get a ban by id](https://dev.haltman.io/api-reference/get-api-admin-bans-id.md): No description found - [Update a ban](https://dev.haltman.io/api-reference/patch-api-admin-bans-id.md): No description found - [Revoke a ban](https://dev.haltman.io/api-reference/delete-api-admin-bans-id.md): No description found - [List API tokens](https://dev.haltman.io/api-reference/get-api-admin-api-tokens.md): No description found - [Create an API token](https://dev.haltman.io/api-reference/post-api-admin-api-tokens.md): No description found - [Get an API token by id](https://dev.haltman.io/api-reference/get-api-admin-api-tokens-id.md): No description found - [Update an API token](https://dev.haltman.io/api-reference/patch-api-admin-api-tokens-id.md): No description found - [Revoke an API token](https://dev.haltman.io/api-reference/delete-api-admin-api-tokens-id.md): No description found - [List admin-managed users](https://dev.haltman.io/api-reference/get-api-admin-users.md): No description found - [Create an admin-managed user](https://dev.haltman.io/api-reference/post-api-admin-users.md): No description found - [Get a user by id](https://dev.haltman.io/api-reference/get-api-admin-users-id.md): No description found - [Update a user](https://dev.haltman.io/api-reference/patch-api-admin-users-id.md): No description found - [Soft-delete a user](https://dev.haltman.io/api-reference/delete-api-admin-users-id.md): No description found - [Change the authenticated admin's own password](https://dev.haltman.io/api-reference/patch-api-admin-users-me-password.md): No description found - [List DNS requests](https://dev.haltman.io/api-reference/get-api-admin-dns-requests.md): No description found - [Create a DNS request](https://dev.haltman.io/api-reference/post-api-admin-dns-requests.md): No description found - [Get a DNS request by id](https://dev.haltman.io/api-reference/get-api-admin-dns-requests-id.md): No description found - [Update a DNS request](https://dev.haltman.io/api-reference/patch-api-admin-dns-requests-id.md): No description found - [Delete a DNS request](https://dev.haltman.io/api-reference/delete-api-admin-dns-requests-id.md): No description found ## Changelog - [List active managed domains (compatibility mirror)](https://dev.haltman.io/index.md): No description found - [Changelog](https://dev.haltman.io/changelog.md): Release history and project updates for Haltman.io open-source tools and services.