The Autonomous Stack
Agent Domain Sentinel icon

Agent Domain Sentinel · Communication · v1

Monitor domain expiry, status and prices

Monitor domain status and confirmed prices with conservative source-backed alerts.

$3.00one-timePay with crypto

Buy on Gumroad → https://6355137346884.gumroad.com/l/tas-agent-domain-sentinel-v1

domain-monitoring rdap whois registrar-api marketplace-alerts

agent ⟶ theautonomousstack.xyz

01GET /api/v1/pack/agent-domain-sentinel-v1

402 Payment RequiredPAYMENT-REQUIRED

02sign TransferWithAuthorization3.00 USDC · Base (eip155:8453)

03GET + PAYMENT-SIGNATURE

200 OKapplication/zip · 30 files

pay per pack over x402no account

What's inside

  • CHANGELOG.md
  • CHECKLIST.md
  • CUSTOMIZE.md
  • OPERATING_COST_ESTIMATE.md
  • PROMPTS.md
  • README.md
  • SOUL.md
  • SPEC.md
  • agent-domain-sentinel-v1.json
  • agent-domain-sentinel-v1.service
  • agent.py
  • alerts/README.md
  • deploy.sh
  • examples/alert.example.md
  • examples/config.example.json
  • examples/domains.example.txt
  • examples/manual_sources.example.json
  • examples/report.example.md
  • examples/state.example.json
  • install.sh
  • llm_adapter.py
  • pack_memory.py
  • requirements.txt
  • smoke_test.sh
  • templates/alert.template.md
  • templates/domain_list.txt
  • templates/provider_config.json
  • templates/report.template.md
  • templates/state.schema.json
  • test_agent.py

Domain Sentinel monitors domain names with deterministic evidence rules. It can read local domain lists, query configured technical sources, keep a local state, generate reports, and create alerts only when a confirmed change is detected.

The pack does not invent availability, prices, marketplaces, API keys, or buying advice. If evidence is missing, vague, or conflicting, the output stays unknown or conflicting and asks for re-verification.

Availability and prices that are not verified by reliable sources remain unconfirmed in both machine output and user-facing reports.

Quick start

bash install.sh
python3 agent.py --help
python3 agent.py run --once --dry-run
python3 agent.py check example.com --dry-run
python3 agent.py generate-names "agent capability packs"
python3 agent.py purchase-guard example.com --provider registrar-name --max-price 12.50 --currency USD
python3 agent.py report
python3 agent.py status

Dry-run skips external paid actions and remote mutations. It may still use local manual evidence from examples/manual_sources.example.json.

Evidence rules

Allowed proof sources are RDAP or WHOIS, official registrar APIs, official marketplace APIs, explicitly verified sale pages, and user-provided manual sources. DNS absence, ping failure, an empty website, vague search results, and LLM suggestions are never treated as proof.

If a source says a domain is listed but does not provide a numeric price, Domain Sentinel reports UNKNOWN_PRICE. If reliable sources disagree on availability or price, it reports CONFLICTING_SOURCES.

Purchase safety

No automatic purchase, bid, registration, renewal, or checkout is included in v1. The purchase-guard command only validates a future-confirmation phrase and always returns purchase_executed: false.

Any future purchase-capable version must block unless the user supplies this exact phrase:

CONFIRM_PURCHASE domain=<domain> provider=<provider> max_price=<amount> currency=<currency>

API keys are read from environment variables such as REGISTRAR_TOKEN and are never written to state, reports, alerts, or logs by the deterministic core.

Use a local model (Ollama)

The optional LLM step can also run on your own machine through Ollama, so no text leaves your server. No account and no API key.

ollama pull <model>               # any chat model you like
export PACK_LLM=ollama            # prefer Ollama even if a coding-agent CLI is installed
export PACK_OLLAMA_MODEL=<model>  # optional: default is the first chat model the server lists
python3 -c "import llm_adapter; print(llm_adapter.detect())"   # prints: ollama
  • PACK_OLLAMA_HOST points to another server (default http://127.0.0.1:11434); OLLAMA_HOST is also read when PACK_LLM=ollama.
  • PACK_OLLAMA_NUM_CTX sets the context size if your reports or prompts are long.
  • Without PACK_LLM, a local Ollama server is used only when no Claude Code, Kimi Code or Codex CLI is found.
  • If the server is down or the model is missing, the pack keeps working in its deterministic mode.

Learning memory (local and private)

Every LLM call this pack makes is journaled in ./.pack_memory/ next to the code, so the pack can improve for you. Nothing is ever sent anywhere.

  • What is kept: the task name, the masked input, the masked answer, status and latency. Keys, tokens, e-mails, phone numbers, IP addresses, card and IBAN numbers and personal paths are masked before writing; the system prompt is never stored.
  • Teach it: python3 pack_memory.py feedback last ok confirms a result, python3 pack_memory.py feedback last bad --fix "the right answer" corrects it. Confirmed and corrected runs are reused as validated examples when a similar input comes in. Unrated runs are never injected into a prompt.
  • Find similar cases: python3 pack_memory.py similar "some text" and python3 pack_memory.py clusters (groups of near-identical failures) work in plain Python, no model needed. Optional meaning-based matching uses an embedding model you already run locally: python3 pack_memory.py enable-semantic (Ollama on this machine only).
  • Share, only if you want: python3 pack_memory.py export writes an anonymised summary (counts, statuses, size buckets, no text) for you to review.
  • Control: PACK_MEMORY=0 turns it off, PACK_MEMORY_STORE_TEXT=0 keeps fingerprints only, python3 pack_memory.py purge --yes wipes it.