Skip to content
View 0xmortuex's full-sized avatar

Highlights

  • Pro

Block or report 0xmortuex

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
0xmortuex/README.md

🆕 What's new

🧰 30 new MCP servers Everyday dev tools for AI agents — test runner, import-graph impact analysis, secret scanning, linters for GitHub Actions, Kubernetes, Dockerfiles, Terraform plans and OpenAPI, plus safe tools for spreadsheets, PDFs, archives and media. See them ↓
📚 A "hard way" guide for every one Each new server ships with a companion guide that rebuilds it from an empty file — 38 guides in total
λ vex-lang My second language: type inference, enums with exhaustive match, Option/Result with ?, generics, and its own bytecode VM
🤖 13 OSdev MCP servers Agents boot kernels in QEMU, rewind them, single-step over the gdbstub, and decode ACPI, devicetrees, page tables and linker maps — jump to them ↓
💾 MORT OS grew up Users, permissions and sudo, a hierarchical MortFS v2, a home launcher and Settings app, a power menu with lock / sleep / restart / shutdown, and a live RTC clock
🌐 Vex profiles & import Side-by-side profiles with their own tabs, passwords and sync, plus importing from Chrome, Edge, Brave and Firefox
⚡ FlashMind lecture mode Record a lecture in class and get a live transcript turned into notes, cards and exam alerts
📰 ai-news-tracker Rebuilt as a serverless pipeline: a scheduled Action ingests ~75 sources, dedupes and clusters stories, and publishes JSON + Atom feeds that the Vex start page reads

λ The Mort stack — a language, then an OS written in it

I wanted to know what's underneath, so I built Mort — a statically-typed language whose whole compiler (lexer, parser, type checker, C code generator) is written from scratch in Python with zero libraries. Then I wrote MORT OS in it. Mort compiles to C instead of being interpreted for one reason: an interpreter can't boot.

CI tests kernel license

Toolchain: hello.mx goes through mortc (my compiler) to freestanding C, then zig cc cross-compiles to i386, producing mortos.iso (Limine BIOS/UEFI) that boots a real PC from a USB stick. Inside the ISO, all in Mort: drivers, MortFS v2, users and sudo, a desktop with apps, the mortnet TCP/IP stack, int 0x80 syscalls.

What MORT OS does today

  • Boots real PCs — Limine BIOS/UEFI ISO, straight from a USB stick
  • Real drivers — PS/2 keyboard, PIT, CMOS clock, ATA disk, framebuffer, RTL8139 NIC
  • A real filesystem — MortFS v2 with directories, owners and Unix permission bits
  • Users & sudo — plus a shell with a working directory, $PATH and env vars
  • A desktop — Terminal, Files, a Vex-styled browser and Settings, on F1–F5
  • Programs — compiled Mort binaries talk to the kernel over int 0x80
  • Networking — net gets an IP over DHCP, httpd serves a web page
// examples/fib.mx
fn fib(n: int) -> int {
    if n < 2 { return n; }
    return fib(n - 1) + fib(n - 2);
}

fn main() -> int {
    let i = 0;
    while i < 10 {
        print(fib(i));
        i = i + 1;
    }
    return 0;
}

MORT OS graphical desktop — the window manager, drivers, filesystem and shell are all written in Mort

MORT OS power menu: Lock, Sleep, Restart, Shut down, with a live clock in the top bar MORT OS networking: net leases 10.0.2.15 over DHCP, httpd serves on port 80

The desktop, the power menu, and httpd serving a page — a web server, on an OS, over a TCP/IP stack, every layer in one language I wrote.

Around the OS — and a second language

Project What it is
mortnet TCP/IP stack written from scratch in Mort — NIC driver → ARP → IPv4 → ICMP → UDP → DHCP → DNS → TCP → HTTP — vendored into MORT OS
MortHardware Reusable bare-metal drivers pulled out of MORT OS: PCI, RTL8139, AC'97 audio, UHCI USB
mort-repo Package registry for mpkg, the MORT OS package manager
vex-lang Language #2 — type inference, enums and exhaustive match, Option/Result with ?, generics, compiled to its own bytecode VM
nanomort The whole idea in one Python file under 800 lines — a typed language that compiles to C and still boots a kernel

🤖 AI agents that do OS development

AI agents can edit and build a kernel, but they can't see it boot — and they make up hardware facts. These MCP servers close that gap. Every one works below the OS: no SSH, no guest agent, nothing installed in the guest. They grew out of my own MORT OS dev loop.

13 MCP servers for OS developers. Drive: qemu-mcp, qemu-replay-mcp, gdbstub-mcp, uefi-mcp. Decode: acpi-mcp, devicetree-mcp, pagetable-mcp, linkmap-mcp, x86-ref-mcp. Look up: osdev-wiki-mcp, kconfig-mcp, syzbot-mcp, mort-mcp.
Server It lets an agent…
qemu-mcp ⭐ boot an ISO or kernel, type, screenshot, read serial
qemu-replay-mcp record a run, step backwards, find who wrote an address
gdbstub-mcp set breakpoints, read registers and backtraces — no gdb binary
uefi-mcp boot an .efi under OVMF and decode EFI_STATUS and GUIDs
acpi-mcp read MADT, FADT, MCFG from a live VM
devicetree-mcp decode and validate .dtb / .dts, memory maps, IRQ routing
pagetable-mcp walk live x86 page tables and explain page faults
linkmap-mcp explain where code landed in a linked binary and why
x86-ref-mcp look up instruction forms, flags, CPUID, CR/MSR bits
kconfig-mcp answer "why can't I enable CONFIG_X?" with file:line
syzbot-mcp fetch and explain syzbot Linux kernel bug reports
osdev-wiki-mcp search the OSDev wiki offline
mort-mcp write, type-check and run Mort — a language it has never seen

MORT OS terminal after an AI agent typed help — captured through qemu-mcp

An AI agent took this screenshot. It booted MORT OS headless, pressed Esc, typed help, and captured the framebuffer through qemu-mcp — four tool calls.



Also for agents

claude-code-skills — 46 Claude Code skills for the unglamorous work that ships software. Before I add a skill, I check the existing ecosystem and only keep it if no well-known skill already does the job.

ClaudeCode-Brain — turns local Claude Code history into a searchable, backlinked Obsidian vault.


🧰 MCP servers for everyday dev work

30 more servers for the jobs an AI assistant usually fumbles. They work offline, and they either only read or show a dry run before changing anything. Secrets are redacted by default.

30 MCP servers for everyday dev work, in three groups: code and repo, infra and CI, files and media.
What each one does — 30 servers

Code & repo

Server It answers…
impact-mcp What breaks if I change this file? Dependents, affected tests, cycles (Python, JS/TS)
testrun-mcp Run pytest, unittest, jest or vitest and get small structured failures, flaky detection, rerun-failed
stacktrace-mcp A root-cause report from a crash in Python, Node, Java, Go, Rust or .NET
gitrisk-mcp Hotspots, who knows this code, change coupling, bus factor
debt-mcp Every TODO/FIXME with its real age and author from git blame
secretscan-mcp Committed secrets in the tree and in git history, with rotation checklists
depaudit-mcp Known vulnerabilities in your lockfiles, transitive deps included, via OSV.dev
license-mcp What licenses are my dependencies under, and can I ship this?
envdoctor-mcp .env vs .env.example, undocumented and unused variables across 11 languages
regexlab-mcp Test a regex in real engines side by side, with ReDoS confirmed by timing
structdiff-mcp Semantic diffs of JSON, YAML, TOML, CSV, .env and INI, with RFC 6902 patches

Infra & CI

Server It answers…
workflowlint-mcp GitHub Actions audit: pwn requests, script injection, unpinned actions, token permissions
kubelint-mcp 76 rules for Kubernetes manifests, no cluster or kubectl needed
dockerlint-mcp 47 rules for Dockerfiles and compose files, layer-cache analysis
tfplan-mcp Risk-ranked review of a Terraform/OpenTofu plan: destroys, open firewalls, IAM broadening
oaslint-mcp OpenAPI lint and breaking changes between Swagger 2.0, 3.0 and 3.1
netcheck-mcp Is my site healthy? TLS, DNS, headers, SPF/DMARC — with its own DNS resolver
har-mcp Slowest requests, failures and the critical path in a browser HAR trace
logs-mcp Huge log files in constant memory: error clusters, timelines, request tracing
ports-mcp What is using this port? Free it with a two-step confirmed kill

Files & media

Server It does…
sheet-mcp Read and edit .xlsx without destroying formulas, charts or macros
sqlscope-mcp Explore an SQLite database, read-only by construction
duckdb-mcp Sandboxed SQL over local CSV, Parquet and JSON
pdf-toolkit-mcp Read, search, extract tables, merge and split PDFs — pure Python
mdvault-mcp Obsidian-style notes: BM25 search, backlinks, link-updating rename
icskit-mcp Local .ics calendars: agenda, free time, DST-correct recurrence
unpack-mcp Zip/tar inspection and extraction that blocks zip-slip and decompression bombs
subtitle-mcp Resync, shift, convert and repair SRT/VTT subtitles
picture-mcp Resize, convert, compress to a target size, strip GPS/EXIF
ffmpeg-mcp Compress to a target size, trim, GIF, extract audio — on PyPI as mediakit-mcp

📚 Build it yourself — "the hard way" guides

38 tutorials where you start from an empty file and end up with something that really works. Every chapter is taken from code that runs, and every step is checked — the OS guides in real QEMU.

Guide You end up with
Write an OS in your own language A compiler in plain Python, then a kernel in your new language that boots, persists files, and serves a web page
TCP/IP stack the hard way Ethernet frames up to an HTTP server, based on mortnet and checked by golden tests
Kernel gdbstub the hard way A gdbstub inside your own kernel — UART, RSP framing, single-step, int3 breakpoints
ACPI the hard way RSDP, MADT, FADT, shutdown, PCIe ECAM and HPET, from scratch
MCP server the hard way An MCP server that lets an AI debug a kernel, from raw RSP bytes to triple-fault diagnosis
qemu-mcp the hard way qemu-mcp rebuilt module by module — QMP, screenshots, typing, serial, snapshots
Roblox anticheat the hard way A production-grade server-side anticheat, every line explained
vex-lang the hard way A typed language with inference, a bytecode compiler and a VM
…and one for every everyday MCP server — 30 more guides

Each one rebuilds its server from scratch: the file formats, the safety rules, the edge cases, and the tests.

debt-mcp · depaudit-mcp · dockerlint-mcp · duckdb-mcp · envdoctor-mcp · ffmpeg-mcp · gitrisk-mcp · har-mcp · icskit-mcp · impact-mcp · kubelint-mcp · license-mcp · logs-mcp · mdvault-mcp · netcheck-mcp · oaslint-mcp · pdf-mcp · picture-mcp · ports-mcp · regexlab-mcp · secretscan-mcp · sheet-mcp · sqlscope-mcp · stacktrace-mcp · structdiff-mcp · subtitle-mcp · testrun-mcp · tfplan-mcp · unpack-mcp · workflowlint-mcp


🧭 Apps I ship

Vex — a browser built for you

A Chromium desktop browser (castLabs Electron, so Widevine DRM works) with a built-in AI agent that can work on your tabs, ad & tracker blocking, one-click Tor, an encrypted password vault with 2FA autofill, sidebar apps, profiles, and a UI you can rearrange to the pixel.

Latest release Downloads

⬇ Download for Windows · Self-hosting

Vex website — a browser built just for you; try a look: Firefox, Chrome, Safari, Glass or Classic

FlashMind — the AI study engine I use for school

Paste notes, upload a PDF, snap a photo (OCR in English and Turkish), record a lecture, or just name a topic. FlashMind turns it into notes, a flashcard deck and a Turkish-style exam with AI-graded open questions. Reviews are scheduled by an FSRS-4.5 algorithm I wrote myself. It's vanilla JS, with no framework.

FSRS OCR

⚡ Try FlashMind · Source

FlashMind — pick a 10th-grade subject and topic, paste text, upload a PDF, or record a lecture


🗂 More work

🔒 Security & OSINT — 6 projects
Project Description Live
ReconX Domain recon in the browser — DNS, WHOIS, SSL, headers, tech stack, subdomains Demo
PassCrack Password analyzer that simulates real attacks — crack times, patterns, entropy, 100% in-browser Demo
NetMap Visual traceroute — packets hop across an interactive world map Demo
CipherLab 13 ciphers and hashes, each with visual step-by-step breakdowns Demo
CodeLens Paste code, get an AI security audit and a quality report card Demo
ai-proxy Cloudflare Worker that keeps AI API keys out of client code, with streaming passthrough —
🤖 AI tools — 6 projects
Project Description Live
ai-news-tracker Serverless AI news pipeline — ~75 sources, clustering, scoring, JSON + Atom feeds —
LoopholeMap Paste a regulation, see its loopholes as a severity-ranked D3 graph Demo
AIJudge Describe an argument, get a verdict with legal-style reasoning and shareable ruling cards Demo
TermsTrap Flags data selling, forced arbitration and auto-renewals in any Terms of Service Demo
DebateBot Strongest arguments on both sides, with evidence chains and fallacy detection Demo
LexScope Turns dense legislation into navigable sections with plain-English summaries Demo
🛠 Apps, desktop & extensions — 9 projects
Project Description Live
mortuexOS My portfolio as a desktop OS in the browser — boot sequence, windows, terminal, 9 apps Demo
Nexus Process Lasso-style Windows optimizer (WPF) — per-process rules, crash-safe Game Mode, undo for every tweak —
RoSuite Free RoPro alternative for Chrome/Brave — server browser, player info, trade calculator —
Zine Manga reader with a print-zine design language — React 19 + MangaDex —
mun-tracker Mobile-first tracker for 43 Model UN conferences in Turkey Demo
ChatRoom Anonymous real-time chat rooms on a Cloudflare KV backend Demo
BillForge CUSA legislative bill editor with auto-numbering and live preview Demo
MiniOS The browser-OS experiment that grew into mortuexOS Demo
Vencord + plugins My Vencord build: ChatExporter, MessageLoggerEnhanced, InactivityTracker, QuickNotes, RoleMembers and more —
🎮 Fun & data — 3 projects
Project Description Live
TypeRush Typing game with quotes, real code snippets, live WPM and achievements Demo
GitPulse Any GitHub username → a visual developer profile Demo
steamogames Live Steam player stats — concurrent players, peaks and trends —

🧰 Stack

Mort Vex Python C x86 QEMU MCP JavaScript TypeScript React Electron C# Cloudflare Workers

📊 Stats

GitHub stats Top languages



contribution snake

No third-party stats services on this page. The cards come from a workflow in this repo, and the banner and diagrams are hand-written SVGs.

💬 Say hi

Discord: vesperhex Portfolio: mortuexOS

Add vesperhex on Discord — happy to talk about compilers, kernels, MCP, or anything in this README.


Every web project above is open source, and most are live on GitHub Pages. Not sure where to start? Boot MORT OS or try FlashMind.

Pinned Loading

  1. Vex Vex Public

    A browser built for you — fast, private, and rearrangeable to the pixel. An Electron/Chromium desktop browser with vertical or top tabs, tab groups & workspaces, a built-in AI agent, ad/tracker blo…

    JavaScript 3

  2. Mort Mort Public

    A statically-typed language that compiles to C, written from scratch in Python — plus MORT OS, a bootable kernel written in Mort.

    Python

  3. qemu-mcp qemu-mcp Public

    MCP server that lets AI agents boot and drive QEMU VMs - keystrokes, screenshots, serial console. Built for OS developers: no SSH or guest agent needed, works on a bare kernel.

    Python 5 2

  4. gdbstub-mcp gdbstub-mcp Public

    MCP server that lets AI agents debug kernels through QEMU's gdbstub - no gdb binary. Breakpoints, registers, DWARF lines, backtraces, and triple-fault diagnosis.

    Python 1 1

  5. claude-code-skills claude-code-skills Public

    A curated pack of 46 Claude Code skills for the unglamorous work that ships software - ship-it, readme-forge, security-sweep, git-rescue, devlog, and more. Each one researched first: only problems …

    Python

  6. MortOS MortOS Public

    A graphical x86 desktop OS written entirely in Mort, my own language: terminal, files, filesystem, TCP/IP stack. Boots in QEMU (BIOS/UEFI ISO).

    Python