dumbtv
dumbtv가 ADB로 Fire TV에서 광고·추적·업데이트 알림을 제거, 루트·앱 변경 없이, 무료 오픈소스
에이전트가 호출할 수 있는 보안 검사: MCP 사전점검, 소스 패턴 스캔·주입 검사, 서명된 요약 영수증 제공
Security checks agents can call: MCP manifest preflight, source-pattern scanning and injection screening, with signed redacted receipts.
보안Python · JavaScriptGitHub @viridis-security온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Adaptive proof-of-work defense for AI agents. Asymmetric thermodynamic cost: attackers dissipate, defenders verify in O(1). Reference implementation of T-IB-09 (Adversarial Dissipation Theorem) — Aristotle-verified. Apache-2.0.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
SHA-256 proof-of-work defense for AI agents. Constant verification work in difficulty; tunable expected classical search effort.
Apache-2.0. Maintained by Viridis Security.
The defender hashes a candidate solution once and counts leading zero bits. Modeling SHA-256 as a random oracle, a classical solver needs an expected 2^d hash queries to find a fresh solution at difficulty d. Verification cost is constant in difficulty for fixed input lengths. The implementation, regression tests, and model assumptions back these claims; tests do not establish a physical energy bound.README 전문 보기 ↗SHA-256 proof-of-work defense for AI agents. Constant verification work in difficulty; tunable expected classical search effort.
Apache-2.0. Maintained by Viridis Security.
The defender hashes a candidate solution once and counts leading zero bits. Modeling SHA-256 as a random oracle, a classical solver needs an expected 2^d hash queries to find a fresh solution at difficulty d. Verification cost is constant in difficulty for fixed input lengths. The implementation, regression tests, and model assumptions back these claims; tests do not establish a physical energy bound.
T-IB-09 (Adversarial Dissipation Theorem) is a conditional research model. Its Lean source declares one external axiom, asymmetric_defense_property. The saved Aristotle summary reports four arithmetic corollaries compiled; the first three assume the dissipation bounds as explicit hypotheses rather than deriving them from the protocol. This does not establish a joule-per-request bound or guaranteed profitability. THEOREMS.md separates the assumptions, conditional conclusions, and historical checking report. The PoW design follows Dwork & Naor (1992); the search-cost argument uses the random-oracle model.
The pitch in one sentence: require computational effort before a submission reaches your triagers.
# Release candidate: from the reviewed source checkout, until published
pip install -e ./python
from fastapi import FastAPI
from maxwells_defense.middleware import FastAPIMaxwellMiddleware
from maxwells_defense.core import StaticDifficultyOracle
import secrets
app = FastAPI()
app.add_middleware(
FastAPIMaxwellMiddleware,
server_secret=secrets.token_bytes(32),
difficulty_oracle=StaticDifficultyOracle(difficulty=18),
protect_path_prefix="/api/",
)
@app.get("/api/hello")
def hello():
return {"ok": True}
That's it. Any client hitting /api/* now receives a 401 with a Maxwell challenge until they submit a valid solution. JS reference client:
import { fetchWithMaxwell } from "@viridis-security/maxwells-defense";
const res = await fetchWithMaxwell("/api/hello");
console.log(await res.json()); // { ok: true }
For an existing agent or HTTP MCP endpoint, start with the maintainer quickstart: choose the protected operation, wrap its unavoidable HTTP entry point, connect clients, and configure shared state and upstream limits. Run node examples/local-admission/client.mjs from this checkout for an actual local challenge, computation, first acceptance and replay refusal with timing output; it uses a harmless handler and closes its loopback server afterward.
python/ Reference server implementation (Apache-2.0)
maxwells_defense/
core.py Challenge / Solution / issue / verify / solve
middleware.py FastAPI/Starlette + WSGI shims
failure_history.py Bounded per-peer/context local failure counters
errors.py Exception hierarchy
tests/test_invariants.py 17 invariant tests — all green
tests/test_replay.py Single-use, bounded-state and middleware regressions
tests/test_signals.py Transport identity and adaptive-signal regressions
javascript/ Reference client + Node server (Apache-2.0)
src/maxwell.mjs Browser/agent solver; fetchWithMaxwell() wrapper
src/maxwell-express.mjs Node Express middleware
tests/interop.test.mjs JS↔Python wire-format interop test
tests/replay.test.mjs Single-use and Express regressions
tests/signals.test.mjs Transport identity and adaptive-signal regressions
examples/ Drop-in integrations
express-middleware/ Minimal Node example
fastapi-middleware/ Minimal Python example
docker-compose-demo/ `docker compose up` → see PoW gate working
docs/
integration.md Production checklist (secrets, rotation, tuning)
THEOREMS.md Formal mapping to the Intelligence Bound corpus
CONTRIBUTING.md How to file bugs, ideas, rule contributions
LICENSE Apache-2.0
Each invariant has a named regression test. If any of them stops holding, the library is broken — file an issue.
| ID | Invariant |
|---|---|
| MX-INV-1 | Verification cost is O(1) in difficulty (one HMAC, one SHA-256, one bit-count). |
| MX-INV-2 | Fresh solution search takes 2^d expected classical hash queries for difficulty d, under the random-oracle model. |
| MX-INV-3 | Challenges are HMAC-bound to (server_nonce, difficulty, expiry, context). Any tamper is rejected. |
| MX-INV-3a | Expired challenges are rejected. |
| MX-INV-3b | Context-id mismatch at verify time is rejected. |
| MX-INV-4 | No exploit code path. Public API is lexically free of attack_*, exploit_*, bypass_*, etc. (lint-enforced.) |
| MX-INV-5 | Difficulty oracle is pluggable. The library never hard-codes a policy. |
| MX-INV-6 | Middlewares accept a server nonce once before expiry; low-level verification opts in with a nonce store. See single-use tests and deployment requirements. |
The default nonce store fails closed at 100,000 entries: sufficient accepted traffic can fill it and temporarily reject legitimate callers. Size state for accepted requests per second × TTL, use shared Redis across workers, and combine Maxwell with upstream rate limiting, a suitable TTL and storage-failure monitoring. See store capacity and fail-closed behavior.
Use them. They're great at what they do — keeping human visitors past a single-shot human-vs-bot test. Maxwell's Defense addresses a different surface:
FailedAttemptDifficultyOracle example or provide your own rule; this reference does not classify agents or learn from cross-site traffic. Optional context factories can bind challenges to the peer or an identity your application has established. See the context and adaptive-signal guide and regression tests.X-Maxwell-Provider and X-Maxwell-Challenge headers so clients and logs can identify the gate. Hosted receipt integration is separate from this reference and requires its own implementation and service-access checks.This repository ships the reference primitive: SHA-256 hashcash with the search/verification asymmetry. It is the canonical wire-format implementation; it does not establish the thermodynamic assumptions in T-IB-09.
The hosted Viridis Maxwell service (mcp.viridis-security.com/v1/maxwell/*) is a separate implementation. Its advertised design includes:
low/medium/high/extreme), associated with the conditional M parameter in T-IB-09d. This is not a measured energy or profitability guarantee.The hosted implementation, parameters, receipt lifecycle, and account entitlements have not been confirmed by this reference's tests. Its parent SDK documentation requires access to that repository. The reference is not feature-equivalent to hosted Maxwell.
Use Maxwell locally: install the Apache-2.0 reference and follow the example above. For hosted access, ask Viridis Security to confirm Maxwell endpoint access and plan limits before integrating. A free scan-service account does not establish Maxwell challenge-generation access.
0.2.0 — alpha release candidate; this preparation PR does not tag or publish it. See CHANGELOG.md for upgrade notes. The primitive is small (~250 LOC of crypto in core), with wire-format interop tests across two languages. We expect breaking changes in 0.x while we add the federated-difficulty oracle and signed-receipt flow. Pin to a specific version in production.
See the version-pinning and typing guide for exact 0.x dependency pins and the Python typing marker.
# Python (17 original invariant tests plus single-use regressions)
cd python && pip install -e ".[test]" && pytest tests/ -v
# JS↔Python interop
cd javascript && node tests/interop.test.mjs
node tests/replay.test.mjs
node tests/http.test.mjs
node tests/signals.test.mjs
We want difficulty-oracle rules from real-world deployments. See CONTRIBUTING.md.
Apache License 2.0 — see LICENSE.
The corpus theorems referenced in this README (Intelligence Bound corpus) are research artifacts under the same license terms.
If your AI-triaged inbox is buried in scanner-output reports, talk to us. We built the upstream layer.