sortedcord / forge
git.adityagupta.devThe other website

It’s more than git.

Homelabber. Systems enthusiast.
I build things I want to use — agent engines, Linux tools, and the infrastructure to run them myself.

47 repositories, 6 overlapping interests.
Have a look around.

A few favourites.

Different rabbit holes.
Same curiosity.

Pixel-art grid of six Omnia concepts: emergent deceit, divergent perceptions, player agnostic, state-validated agency, deterministic time, bring your own model.

omnia

TypeScript7

A narrative simulation engine where the world state lives outside the model. Characters propose intents that deterministic engine code validates, and each one only knows what it has actually learned, so secrets, betrayals and consequences survive hundreds of turns.

  • TypeScript
  • multi-agent
  • intent validation
  • per-character memory
  • bring your own model
GreenEar web interface: upload a lossless track, pick encoders and bitrates, then run a blind ABX test.

GreenEar

TypeScript1

Can you actually hear the difference? Upload a lossless track, transcode it to MP3, AAC and Opus at any bitrate, then sit a randomized 10-trial blind ABX test against the original.

  • React
  • Express
  • FFmpeg
  • Vite
  • self-hosted

gsplash

C8

Hides the ugly gap between pressing Play in a launcher and the game window appearing. A fullscreen SDL2 splash shows an image or video, launches the game, then gets out of the way once it takes focus.

  • C
  • SDL2
  • FFmpeg
  • Steam Deck
  • AUR

bootstrap-auth-server

Rust1

Gets secrets onto brand-new machines without ever sending them in the clear. A device registers an Ed25519 key, a trusted device approves it, it proves possession by signing a nonce, and only then receives a payload age-encrypted to that key alone.

  • Rust
  • Ed25519
  • age
  • AES-256-GCM
  • SQLite
Leenim editor with a Manim script, rendered preview pane, and timeline for scenes and audio.

leenim

Rust5

Manim, but with an editor. Leenim borrows the workflow of a traditional video editor so you can build 3Blue1Brown-style math animations visually instead of scripting every scene.

  • Rust
  • Tauri
  • TypeScript
  • Manim

AI & agents

Engines, proxies and small tools for working with LLMs and keeping them honest.

omnia is in the highlights
Antigravity Proxy illustration: a Go gopher fishes from a luminous Antigravity logo. Text reads ‘Every model, before the app ships it’ and ‘Plus native video input, straight through the Gemini API.’

antigravity-proxy

Go9

“Antigravity is shit. Gemini isn't.”

Exposes an Antigravity account as a native Gemini API with no OpenAI translation layer, so video input, tool calls and thought signatures arrive intact. Models are discovered live, 5-hour and weekly quotas are tracked, and it ships as one static binary.

  • Go
  • Gemini API
  • OAuth PKCE
  • Docker (scratch)
Gippity Pruner demo thumbnail: Make ChatGPT fast again.Watch demo

gippity-pruner

JavaScript21

ChatGPT crawls once a conversation gets long. This extension hides older messages from the page. Nothing is deleted and the model keeps its full context, but the tab stays snappy.

  • browser extension
  • Chrome
  • Firefox

coggle

Python

Offline natural-language CLI for file conversion and bulk file management, built on tiny spaCy pipelines. No GPU, no cloud.

AuthoCookie

JavaScript

Playwright sidecar that keeps Gemini Web session cookies rotating without putting a browser in your inference service.

omnia-legacy

archivedPython

The original Python LLM-RPG engine with structured world state that Omnia grew out of.

Homelab & infra

Most of what I use day to day runs on hardware I own. This forge included.

bootstrap-auth-server is in the highlights

WifiInsecureEnterprise

Android

Magisk / KernelSU module for CA-less WPA-Enterprise on Android 12+. For legacy networks; deliberately bypasses server-certificate validation.

Web & backend

Pipelines, scrapers and full-stack apps. The plumbing behind things.

GreenEar is in the highlights
  1. 1
    Messy transactions inParse dates, currencies and missing IDs.
  2. 2
    Celery + RedisValidate and convert spend in the background.
  3. 3
    Gemini categorisationStructured output mapped to custom categories.
  4. 4
    Flag the outliersMedian spend, currency and keyword checks.

alemno-payments

Python4

Messy transaction data in, clean categorised data out. Celery workers on Redis validate and convert spend, Gemini categorises with structured output, and statistical anomaly detection flags the odd ones.

  • FastAPI
  • Celery
  • Redis
  • Gemini
  • Docker
UdemyScraper terminal output with its ASCII banner and the fetched Learn Python Programming Masterclass course details.

udemyscraper

archivedPython27

Scraped Udemy course data without authentication and exported it to JSON, CSV or XML. Retired once Udemy added scraping protection, but it was the most-starred thing I'd built.

  • Python
  • Selenium
  • BeautifulSoup

BrewJournal

JavaScript

Offline-first coffee logbook PWA for beans, brews and ratios. React, Express, PostgreSQL.

omega-dl

Python

CLI that downloads and tracks comic series on a schedule. Commissioned work.

udown

Python

A quick and dirty downloader for Udemy lectures.

Linux desktop & gaming

Tiling window managers, compositors, emulation frontends, and a long history of ricing.

gsplash is in the highlights
Kröhnkite-i3 tiling demo showing manually split Kitty terminal windows on KDE Plasma.

krohnkite-i3

TypeScript4

i3-style manual tiling for KWin 6. A fork of Kröhnkite stripped down to do one thing: give KDE Plasma on Wayland the horizontal/vertical splitting i3 users expect, without ripping out KWin.

  • KWin script
  • Plasma 6
  • Wayland
  • TypeScript
  • niri_docs_lookupSearch or read the Niri wiki.
  • niri_add_keybindAdd a binding, validate before applying.
  • niri_remove_keybindComment out an existing binding.
  • niri_query_keybindLook up an action and its properties.
  • niri_rebind_actionMove an action to a new key combination.
  • niri_validate_configCheck syntax and duplicate bindings.

niri-mcp-server

TypeScript1

An MCP server for the Niri Wayland compositor. Lets an AI client search the Niri wiki, add or remove keybindings and validate your config.kdl.

  • MCP
  • Niri
  • Wayland
example.phkg
  configs/
  wallpapers/
  wm/
  config.phn

PHION

Rices, packaged. An early Python project aimed at making window-manager configs, application dotfiles and wallpapers easier to create, store and share as .phkg bundles. The project has its own client library, CLI and documentation.

  • Python
  • Rice packages
  • Dotfiles
  • VuePress docs

PHION project branding from its documentation repository, licensed CC BY 4.0. Scaled for display.

EliteBook 840 G3 · macOS Monterey

macOS, on the wrong laptops.

OpenCore EFI configurations that got macOS running on two HP laptops: Big Sur on the HP 15-bs, Monterey on the EliteBook 840 G3.

sorteds-pegasus

C

My build of the Pegasus frontend for browsing a game library and launching emulators from one place.

Desktop & GUI apps

Native-feeling apps and little utilities, from Qt to Tauri.

leenim is in the highlights
Two osu-statqt desktop windows showing recent osu! activity and scores in the app's pink Qt interface.

osu-statqt

Python23

osu! stats on your desktop: a lightweight PyQt5 client for recent plays, scores (failed ones too) and beatmap info, with Windows and Linux builds.

  • Python
  • PyQt5
  • osu! API

readme-maybe

TypeScript

Generate a README for any GitHub repo with generative AI. Private repos work via OAuth.

compactwhatsapp

CSS

Chrome extension that makes WhatsApp Web compact enough to live in a tiling window.

Music & media

Syllable-synced lyrics, better tagging, and a more useful self-hosted library. My Groovbox projects live here.

GreenEar is in the highlights
pyAMLL terminal interface showing the active syllable, lyric timestamps and playback controls.

pyAMLL

Python4

Time lyrics down to the syllable in a Textual interface. Split words with slashes, follow a word carousel and set start/end timestamps from playback, inspired by Apple Music’s synced lyrics.

  • Textual
  • Lyric timing
  • Syllable sync
nuCard terminal interface with track titles, artists and a metadata editing table.

nuCard

Python1

MusicBrainz Picard, reimagined as a Textual TUI. Browse a music library and edit track metadata without leaving the terminal.

  • Textual
  • Music metadata
  • TUI
Octofin's orange-to-pink octopus logo on a violet background.

Octofin

Jellyfin, with extra legs. A Django/SQLite toolkit bringing media tools and scripts together behind a React management interface. The original music-library prototype lives alongside the newer server and web client.

  • Django
  • SQLite
  • React
  • Jellyfin
Spotiplex matching utility: Spotify playlist on the left, candidate Plex tracks on the right.

spotiplex

Python2

Syncs Spotify playlists into Plex. It pulls tracks with spotipy, matches them against your Plex library and walks you through the misses, so you stop downloading duplicates.

  • Python
  • spotipy
  • Plex

jellyfin-liked-playlist

Python

A webhook-driven FastAPI helper that keeps a virtual Jellyfin playlist in sync with Favourite tracks, across multiple users and servers.

One more rabbit hole.

Built out of curiosity.
Kept out of necessity.

I'm Aditya, also sortedcord around the internet. Based in New Delhi, usually somewhere between a Linux desktop, a self-hosted service and another project that started with “surely I can make this.”

My projects span multi-agent simulation, desktop apps, music tooling, backend pipelines and homelab infrastructure. 15 services run here — from the files and notes I use every day to the forge you're browsing now.

This is a collection, not a résumé. Some things are active, some are experiments, some have been retired. If a project is useful to you, take it for a spin, open an issue, or say hi.