Hi, I'm an open-source maintainer and a Principal Software Engineer at Arbisoft. I've been an Open edX Core Contributor since 2019 and joined its maintenance team in 2020; six years of keeping 150+ repositories upgradeable: Django and Python migrations, the move to GitHub Actions, and the tooling that became OSSvitals. Alongside that, I'm building AI-powered open-source application stacks under Pressingly FOSS that replace enterprise software for small and medium businesses.

By the numbers: 678 merged pull requests across 95 Open edX repositories, 4,400+ pull requests reviewed, and named maintainer of five Open edX packages.

Featured project

OSSvitals: repository health for open-source organizations, graded daily

Six years of upgrade work across 150+ repositories showed that the hard part was never the fix, it was knowing where to apply it. I rebuilt the Repo Health checks and built OSSvitals on top of them: a published scoring method and one dashboard per organization. Open edX, with 169 repositories, was the first tenant; Moneta is the second. The first thing it showed: more than half of the upgrade bot's pull requests were noise.

  • 2 tenants
  • 169 Open edX repositories
  • 9 scored metrics
  • Graded daily
  • Weights and thresholds published
  • Read-only MCP endpoint

Repo Health was started by Jeremy Bowman and the edX Architecture team. Co-presented at Open edX Conference 2024 with Muhammad Soban Javed.

OSSvitals overview page for the Open edX tenant showing the organisation grade and repository grade distribution
Open edX tenant, overview page, snapshot of 5 October 2026

🔧 Also Featured

🔐 Pressingly Moneta: AI-Powered Open-Source Stacks for SMBs

Currently building Moneta, a self-hosted bundle of open-source applications (Outline, Plane, Penpot, SurfSense, Twenty CRM) that replaces enterprise software for small and medium businesses.

  • Built mpass-auth-proxy, the single sign-on layer across Twenty, Plane, Outline, Penpot and SurfSense.
  • Shipped MCP servers for SurfSense, Plane and Outline so AI tools can work with them directly.
  • Designed the Docker Compose and GKE with ArgoCD deployment topology, with branch-based promotion from foss-sandbox to foss-main.

🧩 Ecosystem-Wide Upgrades

Part of the Arbisoft squad that moved 150+ Open edX repositories through Django 3.2, 4.2 and Python 3.12.

  • Coordinated the Python 3.12 migration and upgraded ten services myself.
  • Wrote codemods and scripts reused across teams.
  • Shared the Django 4.2 wave across the squad, with thirteen PRs of my own.

🔄 CI/CD Migration to GitHub Actions

Moved Open edX repositories off Travis CI, Jenkins and CircleCI.

  • Converted nineteen of twenty-four repositories in the 2021 Travis CI wave.
  • Built self-hosted autoscaling runners on AWS EKS with Kubernetes, HPA and cluster autoscaler.
  • Authored shared GitHub Actions used across community repositories.

See all projects →


Skills and Tools

Languages and frameworks

  • Python
  • Django
  • Django REST Framework
  • React
  • TypeScript

CI/CD and automation

  • GitHub Actions
  • GoCD
  • Jenkins
  • ArgoCD
  • Ansible
  • pytest
  • Codemods

Cloud and containers

  • AWS (Lambda, ECS, EKS, RDS, S3)
  • GCP (GKE)
  • Docker
  • Kubernetes

Observability

  • Datadog
  • Splunk
  • New Relic
  • CloudWatch

Identity and AI tooling

  • OAuth and OpenID Connect
  • Cognito
  • MCP
  • Claude Agent Skills

🎓 Six Years of Open edX

Where most of these tools were used day to day.

  • Owned production deployments for edX and 2U with GoCD (AMI deploy and rollback for core services), and led the knowledge-transfer handover to the incoming vendor team.
  • Migrated CI from Jenkins to GitHub Actions, with self-hosted autoscaling Kubernetes runners.
  • Worked through the logging move from Splunk to Datadog after 2U acquired edX, and ran internal New Relic sessions.
  • Delivered platform migrations (Elasticsearch to OpenSearch, translation API v2 to v3, GitHub-sourced dependencies to PyPI) and the Python 3.8 to 3.12 and Django LTS upgrades with reusable codemods.

I am always open to connect, collaborate, or share ideas. The best way to reach me is by email at [email protected] or on LinkedIn.