Skip to content
arcymonekPublic

About

Local-first tool for checking suspicious IP addresses, URLs, DMARC reports and e-mails, and for preparing AbuseIPDB reports. Runs only on your own computer, explains every result in plain language, computes security facts in code and uses an LLM only as an optional helper. English and Polish.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

1 watching

Forks

Latest commit

 

History

249 Commits

Folders and files

Seisa logo
Seisa

License: GPL-3.0-or-later CI status Platform: macOS and Linux Python 3.11 or newer Pull requests welcome

English | Polski

Seisa

Seisa is a tool that runs on your own computer and helps you judge whether an IP address, a web link, a DMARC report or an e-mail can be trusted, and report abuse to AbuseIPDB.

Right after installation Seisa can already do something useful, but most of its knowledge comes from outside services, and those need API keys.

  • Without any key: analysis of an e-mail's source without the language model, WHOIS, RDAP and DNS checks in the IP tab, and reading DMARC reports.
  • With free keys: reputation of IP addresses, link scans and AbuseIPDB reports. VirusTotal, urlscan, AbuseIPDB, GreyNoise and other services have free plans with limits that are enough to run Seisa.
  • With an OpenRouter key: a step-by-step lesson in the Email tab and help with drafting AbuseIPDB reports. OpenRouter charges you for what you actually use.

You do not edit any files: paste each API key in the Info tab.

Screenshots

Click a picture to see it full size.

IP URLScan DMARC
The IP tab The URLScan tab The DMARC tab
Email AbuseIPDB Info
The Email tab The AbuseIPDB tab The Info tab

What Seisa does

Pick the tab that matches what you have in your hand. docs/USER_GUIDE.md describes every tab in detail.

Tab What it does Needs an API key?
IP Looks up an IP address or a domain in several sources at once and combines them into one 0-100 risk score Each source has its own key. WHOIS, RDAP and DNS need none
URLScan Has urlscan.io open a suspicious link for you and returns a report with a screenshot URLSCAN_API_KEY
DMARC Reads the DMARC reports of your domain (summaries that mail providers send about mail sent in your domain's name) and shows who sends mail as you No
Email Explains a suspicious e-mail step by step: local facts, plus an optional lesson from a language model Only for the lesson
AbuseIPDB Prepares, checks and, on your click, sends an abuse report about the sender of an e-mail To send
History Your recent checks, scans, imports, analyses and reports in one place No
Logs Errors and warnings of the services No
Info Version, API keys (enter them here), limits, language, theme and the application icon No

Quick start

What you need

  • macOS or Linux. Windows is not supported directly (it may work through WSL, Linux inside Windows, but this has not been tested).
  • Python 3.11 or newer. The installer tells you what to install if it is missing.
  • A web browser, and port 54321 free: Seisa opens at http://127.0.0.1:54321.
  • Optional: git, to update Seisa and to see "Recent changes" in the Info tab.

Install and run

git clone https://github.com/arcymonek/seisa.git
cd seisa
bash install.sh
./seisa.sh

The installer sets up a private Python environment, installs the libraries and creates your .env settings file. The last command starts Seisa and opens your browser. Keep the terminal window open while you use it; closing it stops Seisa.

A ZIP download instead of git, the application icon, updating and troubleshooting are in docs/OPERATIONS.md. To remove Seisa later, run bash uninstall.sh in the same folder: it asks before every step and keeps your data unless you confirm (Uninstalling).

Try it without any key

You do not need an account anywhere to see Seisa at work. Right after the installation:

  • DMARC: load a DMARC report file (.xml, .gz or .zip) from your mail provider.
  • Email: paste the source of a suspicious e-mail and click "Analyze without LLM".
  • IP: check an address; WHOIS, RDAP and DNS answer without a key.

Each API key you add later switches on one more service.

API keys (.env)

An API key is a long code that a service gives you so it knows who is asking. Create an account with the service (the "Open ..." button next to each key in the Info tab takes you to its site). Then open the Info tab (the slider icon at the right end of the tab bar), paste the key in the "API keys" card and click "Save keys". Seisa writes it into the .env file for you and uses it at once.

You can also edit .env by hand: paste the key after the = sign and restart Seisa. A service without a key is simply skipped.

Key Service What it switches on Where to get it
URLSCAN_API_KEY urlscan.io The URLScan tab: scans, earlier scans, screenshots urlscan.io
VIRUSTOTAL_API_KEY VirusTotal An IP tab source for IPs and domains (Seisa limits itself to 4 requests a minute and 500 a day) virustotal.com
OTX_API_KEY AlienVault OTX An IP tab source for IPs and domains otx.alienvault.com
CLOUDFLARE_RADAR_API_KEY Cloudflare Radar Context in the IP tab: network and place of an IP, ranking of a domain (not part of the score) dash.cloudflare.com
ABUSEIPDB_API_KEY AbuseIPDB An IP tab source; in the AbuseIPDB tab the history of an address and sending reports abuseipdb.com
GREYNOISE_API_KEY GreyNoise An IP tab source for IPs greynoise.io
OPENROUTER_API_KEY OpenRouter The language model: the Email lesson and the AbuseIPDB assessment and draft comment (paid by use) openrouter.ai
OPENROUTER_MODEL OpenRouter Which model to use (the default is anthropic/claude-sonnet-4.5) -

WHOIS, RDAP and DNS, the public registries of who owns an address or a domain, need no key and are always on. The Info tab shows whether each key is "set" or "not set", never the key itself. The account pages and prices belong to the services and may change; check them there.

Privacy

Principles

  • Local. Seisa listens only on 127.0.0.1. It has no account, no telemetry and no update check.
  • Nothing without your click. Nothing goes to an outside service until you click, with one documented exception (see the table below).
  • Facts come from code. Security facts (the sender's address, the route of the mail, SPF/DKIM/DMARC results, which show whether a message really comes from the domain it claims) are computed by ordinary program code. The language model only explains them and may give an advisory second opinion.
  • Untrusted by default. Links in e-mails and scanned pages are never clickable, and nothing in an e-mail is opened or downloaded.
  • Reports by hand. A report reaches AbuseIPDB only after your click, and only after checks in the backend.

What leaves your computer

This is a short version of the full table in docs/PRIVACY.md, which lists every call.

Action What is sent To whom
IP: "Check" The IP address or domain The sources you selected (WHOIS, RDAP and DNS without a key; the others with their keys)
URLScan: "Scan" The URL and your options urlscan.io, which opens the page itself
DMARC: "geo (RDAP)" One source IP. Loading a report sends nothing RDAP and DNS
Email: "Analyze" The e-mail (headers, decoded text, attachments only as a size and hash) and the computed facts. "Analyze without LLM" sends nothing OpenRouter and the model provider
AbuseIPDB: "Analyze" As for Email OpenRouter and the model provider
AbuseIPDB: address in the form The IP, looked up automatically (the only call without a click of its own, and only with a key) AbuseIPDB
AbuseIPDB: "Send via AbuseIPDB API" The public report: IP, categories, time and comment AbuseIPDB
Info: "Refresh limits" Quota queries VirusTotal, urlscan.io, OpenRouter
Info: "Search models" A request for the public model list (no key, none of your data) OpenRouter

Contributing

Bug reports, ideas and pull requests are welcome. You do not have to be a programmer to help:

  • Report a bug or something that confused you, with the "Bug report" template.
  • Fix a sentence in the documentation, in English or in Polish.
  • Improve a text in the interface; the catalogs are in frontend/i18n/.
  • Pick a task with the good first issue label.

Start with CONTRIBUTING.md; the developer set-up is in docs/DEVELOPMENT.md. Please report security problems privately, as described in SECURITY.md. Everyone taking part is expected to follow the Code of Conduct.

Project status

Seisa has one maintainer, and it is a hobby project. Replies to issues and pull requests can take a few days. Only the main branch receives fixes; older versions do not. If a report goes quiet for a while, please be patient.

Documentation

Built with Claude Code

Seisa's code, tests and documentation are written with Claude Code, Anthropic's AI coding assistant, under the author's direction. The author decides, reviews the behaviour and is responsible for the releases.

License and contact

Copyright (c) 2026 Arkadiusz Polak.

Seisa is free software under GPL-3.0-or-later: you may use it, change it and share it, also commercially, and a modified version you pass on must stay under the same licence, with its source. The full text is in LICENSE.

The bundled marked library (MIT) renders Markdown; the logo and icons are the author's work under the project licence.

Website: arkadiuszpolak.pl
Contact: github@arkadiuszpolak.pl

About

Local-first tool for checking suspicious IP addresses, URLs, DMARC reports and e-mails, and for preparing AbuseIPDB reports. Runs only on your own computer, explains every result in plain language, computes security facts in code and uses an LLM only as an optional helper. English and Polish.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages