AGENTS.md
CHANGELOG.md
CLAUDE.md
CODE_OF_CONDUCT.md
CONTRIBUTING.md
LICENSE
MANIFEST.in
README.md
SECURITY.md
mkdocs.yml
pyproject.toml
requirements-dev.txt
requirements-docs.txt
requirements-release.txt
ruff.toml
deploy/README.md
deploy/config.example.toml
deploy/hookspool-dispatch.service
deploy/hookspool-intake.service
deploy/nginx.example.conf
deploy/scripts/README.md
deploy/scripts/hookspool_batch.py
deploy/sweeps/github_redeliver.py
docs/ARCHITECTURE.md
docs/README.md
docs-site/hooks.py
docs-site/overrides/main.html
docs/architecture/ARCHITECTURE.md
docs/architecture/README.md
docs/architecture/comparison.md
docs/architecture/faq.md
docs/assets/social-preview.png
docs/assets/banners/README.md
docs/assets/banners/beads-dark.gif
docs/assets/banners/beads-light.gif
docs/assets/banners/brake-dark.gif
docs/assets/banners/brake-light.gif
docs/assets/banners/breakers-dark.svg
docs/assets/banners/breakers-light.svg
docs/assets/banners/dials-dark.svg
docs/assets/banners/dials-light.svg
docs/assets/banners/letterbox-dark.svg
docs/assets/banners/letterbox-light.svg
docs/assets/banners/rack-dark.svg
docs/assets/banners/rack-light.svg
docs/assets/banners/ratchet-dark.svg
docs/assets/banners/ratchet-light.svg
docs/assets/banners/spindle-dark.svg
docs/assets/banners/spindle-light.svg
docs/bobbins/README.md
docs/bobbins/private-bobbins.md
docs/bobbins/review.md
docs/bobbins/webhook.md
docs/bobbins/writing-a-bobbin.md
docs/configuration/README.md
docs/configuration/destinations.md
docs/getting-started/README.md
docs/getting-started/first-bobbin.md
docs/getting-started/from-hermes-webhooks.md
docs/getting-started/install.md
docs/getting-started/quick-start.md
docs/getting-started/verifying.md
docs/operations/README.md
docs/operations/cli.md
docs/operations/day-two.md
docs/operations/drills.md
docs/operations/health-and-repair.md
docs/operations/releasing.md
docs/operations/running.md
docs/operations/sweeps.md
docs/operations/upgrading.md
examples/sources/github.toml
examples/sources/kaneo.toml
examples/sources/trello.toml
hookspool/__init__.py
hookspool/__main__.py
hookspool/bobbin_loader.py
hookspool/breaker.py
hookspool/config.py
hookspool/dispatch.py
hookspool/intake.py
hookspool/logs.py
hookspool/net.py
hookspool/plugin.py
hookspool/processor.py
hookspool/store.py
hookspool/verify.py
hookspool.egg-info/PKG-INFO
hookspool.egg-info/SOURCES.txt
hookspool.egg-info/dependency_links.txt
hookspool.egg-info/entry_points.txt
hookspool.egg-info/requires.txt
hookspool.egg-info/top_level.txt
hookspool/bobbins/__init__.py
hookspool/bobbins/atlassian/__init__.py
hookspool/bobbins/atlassian/trello/AGENTS.md
hookspool/bobbins/atlassian/trello/README.md
hookspool/bobbins/atlassian/trello/SETUP.md
hookspool/bobbins/atlassian/trello/bobbin.toml
hookspool/bobbins/atlassian/trello/captures/event.http
hookspool/bobbins/atlassian/trello/captures/head.http
hookspool/bobbins/atlassian/trello/captures/kit.toml
hookspool/bobbins/atlassian/trello/captures/tampered.http
hookspool/bobbins/github/__init__.py
hookspool/bobbins/github/repo/AGENTS.md
hookspool/bobbins/github/repo/README.md
hookspool/bobbins/github/repo/SETUP.md
hookspool/bobbins/github/repo/bobbin.toml
hookspool/bobbins/github/repo/captures/event.http
hookspool/bobbins/github/repo/captures/kit.toml
hookspool/bobbins/github/repo/captures/ping.http
hookspool/bobbins/github/repo/captures/tampered.http
hookspool/bobbins/google/__init__.py
hookspool/bobbins/google/calendar/AGENTS.md
hookspool/bobbins/google/calendar/README.md
hookspool/bobbins/google/calendar/SETUP.md
hookspool/bobbins/google/calendar/__init__.py
hookspool/bobbins/google/calendar/bobbin.toml
hookspool/bobbins/google/calendar/processor.py
hookspool/bobbins/google/calendar/source.py
hookspool/bobbins/google/calendar/captures/event.http
hookspool/bobbins/google/calendar/captures/kit.toml
hookspool/bobbins/google/calendar/captures/no_token.http
hookspool/bobbins/google/calendar/captures/sync.http
hookspool/bobbins/google/calendar/captures/wrong_token.http
hookspool/bobbins/google/drive/AGENTS.md
hookspool/bobbins/google/drive/README.md
hookspool/bobbins/google/drive/SETUP.md
hookspool/bobbins/google/drive/__init__.py
hookspool/bobbins/google/drive/bobbin.toml
hookspool/bobbins/google/drive/processor.py
hookspool/bobbins/google/drive/source.py
hookspool/bobbins/google/drive/captures/event.http
hookspool/bobbins/google/drive/captures/kit.toml
hookspool/bobbins/google/drive/captures/no_token.http
hookspool/bobbins/google/drive/captures/sync.http
hookspool/bobbins/google/drive/captures/wrong_token.http
hookspool/bobbins/google/gmail/AGENTS.md
hookspool/bobbins/google/gmail/README.md
hookspool/bobbins/google/gmail/SETUP.md
hookspool/bobbins/google/gmail/__init__.py
hookspool/bobbins/google/gmail/bobbin.toml
hookspool/bobbins/google/gmail/processor.py
hookspool/bobbins/google/gmail/source.py
hookspool/bobbins/google/gmail/captures/event.http
hookspool/bobbins/google/gmail/captures/kit.toml
hookspool/bobbins/google/gmail/captures/no_token.http
hookspool/bobbins/google/gmail/captures/wrong_token.http
hookspool/bobbins/hookspool/__init__.py
hookspool/bobbins/hookspool/webhook/AGENTS.md
hookspool/bobbins/hookspool/webhook/README.md
hookspool/bobbins/hookspool/webhook/SETUP.md
hookspool/bobbins/hookspool/webhook/bobbin.toml
hookspool/bobbins/hookspool/webhook/captures/bad_signature.http
hookspool/bobbins/hookspool/webhook/captures/event.http
hookspool/bobbins/hookspool/webhook/captures/kit.toml
hookspool/bobbins/hookspool/webhook/captures/ping.http
hookspool/bobbins/hookspool/webhook/captures/tampered.http
hookspool/bobbins/hookspool/webhook/captures/schemes/hmac-sha1-base64-url.http
hookspool/bobbins/hookspool/webhook/captures/schemes/hmac-sha256-base64.http
hookspool/bobbins/hookspool/webhook/captures/schemes/hmac-sha256-hex.http
hookspool/bobbins/hookspool/webhook/captures/schemes/shared-secret-header.http
hookspool/bobbins/hookspool/webhook/captures/schemes/url-token.http
hookspool/bobbins/kaneo/__init__.py
hookspool/bobbins/kaneo/projects/AGENTS.md
hookspool/bobbins/kaneo/projects/README.md
hookspool/bobbins/kaneo/projects/SETUP.md
hookspool/bobbins/kaneo/projects/bobbin.toml
hookspool/bobbins/kaneo/projects/captures/event.http
hookspool/bobbins/kaneo/projects/captures/kit.toml
hookspool/bobbins/kaneo/projects/captures/tampered.http
hookspool/bobbins/plaid/__init__.py
hookspool/bobbins/plaid/items/AGENTS.md
hookspool/bobbins/plaid/items/README.md
hookspool/bobbins/plaid/items/SETUP.md
hookspool/bobbins/plaid/items/__init__.py
hookspool/bobbins/plaid/items/bobbin.toml
hookspool/bobbins/plaid/items/source.py
hookspool/bobbins/plaid/items/captures/kit.toml
hookspool/bobbins/plaid/items/captures/stale.http
hookspool/bobbins/plaid/items/captures/sync_updates.http
hookspool/bobbins/plaid/items/captures/tampered.http
hookspool/bobbins/zoom/__init__.py
hookspool/bobbins/zoom/meetings/AGENTS.md
hookspool/bobbins/zoom/meetings/README.md
hookspool/bobbins/zoom/meetings/SETUP.md
hookspool/bobbins/zoom/meetings/__init__.py
hookspool/bobbins/zoom/meetings/bobbin.toml
hookspool/bobbins/zoom/meetings/source.py
hookspool/bobbins/zoom/meetings/captures/event.http
hookspool/bobbins/zoom/meetings/captures/kit.toml
hookspool/bobbins/zoom/meetings/captures/stale.http
hookspool/bobbins/zoom/meetings/captures/tampered.http
hookspool/bobbins/zoom/meetings/captures/url_validation.http
hookspool/bobbins/zoom/meetings/captures/url_validation_unsigned.http
hookspool/destinations/__init__.py
hookspool/destinations/base.py
hookspool/destinations/hermes.py
hookspool/destinations/http.py
hookspool/destinations/script.py
hookspool/destinations/wire.py
hookspool/migrations/0001_v2.sql
hookspool/migrations/0002_unwrap.sql
hookspool/providers/__init__.py
hookspool/providers/google.py
hookspool/sources/__init__.py
hookspool/sources/gcal.py
hookspool/sources/gmail.py
hookspool/sources/plaid.py
hookspool/sources/template.py
hookspool/sources/zoom.py
hookspool/testing/__init__.py
hookspool/testing/_procrun.py
hookspool/testing/bobbinkit.py
hookspool/testing/netblock.py
hookspool/testing/scan.py
hookspool/testing/sourcekit.py
tests/_bobbinrig.py
tests/_bobbinrules.py
tests/_dispatchkit.py
tests/_googlestub.py
tests/_httpstub.py
tests/_miniyaml.py
tests/_workers.py
tests/conftest.py
tests/kits.py
tests/plaidkit.py
tests/sourcekit.py
tests/test_agents_md.py
tests/test_batch_helpers.py
tests/test_bobbin_label.py
tests/test_bobbinkit.py
tests/test_bobbins.py
tests/test_breaker.py
tests/test_ci_tools.py
tests/test_cli_store.py
tests/test_config.py
tests/test_crash_matrix.py
tests/test_deploy.py
tests/test_dest_hermes.py
tests/test_dest_http.py
tests/test_dest_registry.py
tests/test_dest_script.py
tests/test_dest_wire.py
tests/test_dispatch.py
tests/test_docs.py
tests/test_hardening.py
tests/test_hermes_migration.py
tests/test_intake.py
tests/test_issues.py
tests/test_net.py
tests/test_never_returns.py
tests/test_processor.py
tests/test_providers_google.py
tests/test_release.py
tests/test_services_conformance.py
tests/test_soak.py
tests/test_sources_gcal.py
tests/test_sources_gmail.py
tests/test_sources_plaid.py
tests/test_sources_template.py
tests/test_sources_trello.py
tests/test_sources_zoom.py
tests/test_store.py
tests/test_tee.py
tests/test_unwrap.py
tests/test_verify.py
tests/vpssrc.py
tests/badkit/__init__.py
tests/badkit/badsig.py
tests/badkit/kit_badsig.py
tests/bobbins/test_google_bobbins.py
tests/bobbins/test_google_calendar.py
tests/bobbins/test_google_drive.py
tests/bobbins/test_google_gmail.py
tests/bobbins/test_hookspool_webhook.py
tests/bobbins/test_plaid_items.py
tests/bobbins/test_rules.py
tests/bobbins/test_template_bobbins.py
tests/bobbins/test_zoom_meetings.py
tests/captures/kithead/action.http
tests/captures/kithead/head.http
tests/captures/kitsigned/ping.http
tests/captures/kitsigned/push.http
tests/captures/kitsigned/tampered.http
tests/captures/kitstamped/meeting_ended.http
tests/captures/kitstamped/stale.http
tests/captures/kitstamped/url_validation.http
tests/fixtures/bobbinkit/acme/kitcode/AGENTS.md
tests/fixtures/bobbinkit/acme/kitcode/README.md
tests/fixtures/bobbinkit/acme/kitcode/SETUP.md
tests/fixtures/bobbinkit/acme/kitcode/bobbin.toml
tests/fixtures/bobbinkit/acme/kitcode/source.py
tests/fixtures/bobbinkit/acme/kitcode/captures/bad_signature.http
tests/fixtures/bobbinkit/acme/kitcode/captures/event.http
tests/fixtures/bobbinkit/acme/kitcode/captures/kit.toml
tests/fixtures/bobbinkit/acme/kitproc/AGENTS.md
tests/fixtures/bobbinkit/acme/kitproc/README.md
tests/fixtures/bobbinkit/acme/kitproc/SETUP.md
tests/fixtures/bobbinkit/acme/kitproc/bobbin.toml
tests/fixtures/bobbinkit/acme/kitproc/processor.py
tests/fixtures/bobbinkit/acme/kitproc/source.py
tests/fixtures/bobbinkit/acme/kitproc/captures/event.http
tests/fixtures/bobbinkit/acme/kitproc/captures/kit.toml
tests/fixtures/bobbinkit/acme/kitproc/captures/wrong_token.http
tests/fixtures/bobbinkit/acme/kittpl/AGENTS.md
tests/fixtures/bobbinkit/acme/kittpl/README.md
tests/fixtures/bobbinkit/acme/kittpl/SETUP.md
tests/fixtures/bobbinkit/acme/kittpl/bobbin.toml
tests/fixtures/bobbinkit/acme/kittpl/captures/event.http
tests/fixtures/bobbinkit/acme/kittpl/captures/tampered.http
tests/fixtures/bobbins/acme/digest/README.md
tests/fixtures/bobbins/acme/digest/bobbin.toml
tests/fixtures/bobbins/acme/digest/processor.py
tests/fixtures/bobbins/acme/digest/source.py
tests/fixtures/bobbins/acme/digest/captures/event.http
tests/fixtures/bobbins/acme/fanout/README.md
tests/fixtures/bobbins/acme/fanout/bobbin.toml
tests/fixtures/bobbins/acme/fanout/captures/event.http
tests/fixtures/bobbins/acme/relay/README.md
tests/fixtures/bobbins/acme/relay/bobbin.toml
tests/fixtures/bobbins/acme/relay/source.py
tests/fixtures/bobbins/acme/relay/captures/event.http
tests/kitplugins/__init__.py
tests/kitplugins/headonly.py
tests/kitplugins/signed.py
tests/kitplugins/stamped.py