SPB Git

spb/tendril Public

Tendril — web ingestion platform (scrape/crawl/map/search) on macOS Apple Silicon: WebKit fidelity, authenticated pages, deterministic testable extraction. A self-hosted Firecrawl alternative.

JavaScript 82.6% TypeScript 11.8% HTML 5.3%

History of pnpm-workspace.yaml · clear filter

  1. feat: MCP server, agent Skill, downloads, Tendril logo + playground upgrade
    Integrations (downloadable from the site so a user can hand Tendril to an agent):
    - integrations/mcp: single-file MCP server (tendril_scrape/map/status), bundled
      to one .mjs (no install), tested end-to-end via the MCP SDK client
    - integrations/skill: SKILL.md teaching an agent when/how to use Tendril over HTTP
    - served at /downloads/{tendril-mcp.mjs,tendril-mcp.zip,tendril-skill.zip}
    
    Site:
    - real Tendril logo (spiral-vine SVG) used as favicon + header/footer brand
    - "Give it to your agent" section with download buttons + copy-paste MCP/skill config
    - playground result upgrade: metrics row (status/latency/tier/cached/pipeline),
      metadata card with thumbnail, reading view with word count + copy/download .md,
      link explorer with internal/external filter + search + export, structured/metadata
      tabs, loading skeleton, richer error view
    
    Deployed to m3u96a; live at https://www.ten-dril.com.
    
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
    Simon-Pierre Boucher committed 12 h ago (Aug 10, 2026) · 1 file changed +1
  2. feat: scaffold Tendril monorepo with Phase 1 foundations
    Web ingestion platform (scrape/crawl/map/search) for macOS Apple Silicon,
    following CLAUDE.md. Phase 1 (§24) delivered and fully tested (74 tests):
    
    - shared: Result<T,E>, §15 error taxonomy (single source), types, Pino
      logger with redaction, URL normalization (§10.1)
    - router: pure shouldEscalate escalation decision (§3.4)
    - egress: SSRF validation with resolve-then-validate + IP pinning (§16.5)
    - fetcher-http: Tier 0 undici client, Safari header order, manual redirects
      with per-hop SSRF re-validation, meta-refresh, gzip/br (§3)
    - extract: deterministic pipeline (§8) — JSON-LD/OG/Twitter harvest,
      Readability + density fallback, Turndown rules (GFM tables, fenced code,
      figures, dl), link extraction
    - api: Fastify POST /v1/scrape + /healthz, errors.ts HTTP mapping (§15)
    
    TypeScript strict (noUncheckedIndexedAccess, exactOptionalPropertyTypes),
    fetchers/extractors return Result, author header on every code file.
    
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
    Simon-Pierre Boucher committed 12 h ago (Aug 10, 2026) · 1 file changed +3