Select open source projects I have created

Squidwarc 86 14

Node.js | Docs

A high fidelity, user scriptable, archival crawler that uses Chrome or Chromium with or without a head

WAIL 79 18

Electron, Node.js, React, Redux

Web Archiving Integration Layer (WAIL) is a graphical user interface (GUI) atop multiple web archiving tools intended to be used as an easy way for anyone to preserve and replay web pages. Tools included and accessible through the GUI are Heritrix 3.2.0 and PyWb 0.33.0

node-warc 32 11

Node.js | Docs NPM

Library for working with and creating Web ARChive (WARC) files

chrome-remote-interface-extra 3

Node.js | Docs NPM

The chrome-remote-interface-extra brings a GoogleChrome/puppeteer like api to the chrome-remote-interface-extra by cyrus-and, as well as, making many of the full CDP values puppeteer hides available

Wayback++ 2


A Chrome and FireFox browser extension that brings client-side rewriting to the Internet Archive's Wayback Machine

node-cdxj 1

Node.js | Docs NPM

Library for working with CDXJ files


Node.js | NPM

Launch locally installed Chrome/Chromium for remote debugging with or without defaults


Python 3, asyncio | pypi

primus/eventemitter3 EventEmitter implementation ported to Python

Professional projects I have had to opportunity to work on

browsertrix 41 3

Python 3, asyncio, uvloop, aiohttp, fastapi, and Redis

Webrecorder's containerized high-fidelity browser-based automated crawling + behavior. For this project I created the web based UI using React and Redux and was involved in the development of its RESTful APIs.

simplechrome 10

Python 3, asyncio, aiohttp, and uvloop

Webrecorder's high-level Chrome/Chromium browser automation library. This project is an unofficial fork of pypuppeteer that I heavily modified to meet the needs of Webrecorder's web crawlers and kept up to date with puppeteer


Python 3, asyncio, aiohttp, and uvloop

Chrome Remote Interface Python or cripy for short is an unofficial port of chrome-remote-interface. I developed this project from the ground up in order to providing the low level means for controlling remove Chrome/Chromium browsers using the Chrome DevTools Protocol for simplechrome and autobrowser

autobrowser 3

Python 3, asyncio, uvloop, aiohttp, and Redis

Webrecorder's high-fidelity browser-based crawler. I developed project from the ground up to in order to be used by browsertrix and back the Autopilot feature on when using remote Chrome browsers.

behaviors 3

JavaScript, Node.js, fastify | Docs

Webrecorder automated in-page behavior framework, powers's Autopilot feature. I developed this project from the ground up in order to provide a simple framework for creating behaviors that imitate human behavior when viewing web pages.


Stack: Python, JavaScript, Gevent, WSGI

Python (2 and 3) web archiving toolkit for replaying web archives large and small as accurately as possible. The toolkit now also includes new features for creating high-fidelity web archives