mvslovers open source

mvsMF Ecosystem

A suite of open-source projects that bring modern development tooling to IBM MVS 3.8j — the classic mainframe operating system from 1979.

The Big Picture

mvsMF started as a single project: a z/OSMF-compatible REST API that lets you use Zowe Explorer (VSCode/JetBrains) and Zowe CLI with MVS 3.8j. But mvsMF is just one piece of the puzzle — it needs a web server to run on, a filesystem to serve files from, and it's growing a web frontend of its own. That's why we now have multiple projects that work together as two parallel stacks: one for HTTP (mvsMF + HTTPD) and one for FTP (FTPD) — both sharing the same filesystem (UFSD) underneath. Click each box below to learn more.

Architecture

🌐 Browser
📂 FTP Client
⌨️ curl
💻 Zowe CLI / Explorer
HTTP · REST · FTP
REST API

mvsMF

z/OSMF-compatible REST API for datasets, jobs, and USS files. Runs as a CGI module inside HTTPD.
⟩ mvslovers/mvsmf
Web Frontend · Planned

mvsMF Web UI

Browser-based Dataset Explorer and JES2 Spool Viewer. A modern web app built on the mvsMF REST APIs.
CGI
Web Server

HTTPD

Lightweight HTTP/1.1 server for MVS 3.8j. Hosts mvsMF as CGI, serves the Web UI and static files from UFS.
⟩ mvslovers/httpd
FTP Server

FTPD

Standalone z/OS-compatible FTP server. Dataset access, JES spool, and UFS file transfers. Functionally complete — looking for testers.
⟩ mvslovers/ftpd

mvsMF — What it does

mvsMF implements the IBM z/OSMF REST API on MVS 3.8j. This means you can use modern tools like Zowe Explorer in VSCode to browse datasets, edit members, submit JCL, and view job output — all on a 1979 mainframe.

It handles three API families: /zosmf/restfiles/ds/* (datasets), /zosmf/restjobs/* (jobs), and /zosmf/restfiles/fs/* (USS files via UFSD).

mvsMF is a CGI module — it doesn't listen on a port itself. Instead, it plugs into HTTPD, which handles all HTTP protocol work (TCP, Keep-Alive, TLS) and routes /zosmf/* requests to mvsMF.

mvsMF Web UI — Planned

The Web UI will be a browser-based frontend that gives you a visual interface for working with your MVS system — no IDE or CLI required. Just open a browser and go.

It will include a Dataset Explorer for browsing, viewing, and editing MVS datasets and PDS members, and a JES2 Spool Viewer for inspecting job output, JCL, and spool files. Think of the classic HTTPD 3.3.x built-in JES browser and dataset pages, but redesigned from scratch as a modern, responsive web app.

The key design principle: the Web UI will be a pure frontend that consumes the mvsMF REST APIs. This means it benefits from all the work going into mvsMF (codepage handling, error handling, authentication) without duplicating any logic. HTTPD serves the Web UI's HTML/CSS/JS as static files from UFS.

HTTPD — What it does

HTTPD is the web server that makes everything accessible over HTTP. Originally Mike Rayborn's HTTPD 3.3.x, we're evolving it to 4.0.0 with a major cleanup: removing legacy Lua config, embedded FTP, and MQTT telemetry.

Key responsibilities: TCP listener with worker thread pool, HTTP/1.1 protocol handling, multi-codepage EBCDIC↔ASCII translation (CP037 for MVS data, IBM-1047 for USS files), CGI routing to mvsMF, and serving the Web UI's static files from UFS.

Why a separate repo? HTTPD is a general-purpose server — it can host any CGI module, not just mvsMF. Keeping it separate means other projects can reuse it too.

FTPD — What it does

A standalone FTP server for MVS 3.8j, compatible with z/OS FTP conventions. Unlike mvsMF (which runs inside HTTPD), FTPD is its own Started Task (STC) with its own TCP listener — completely independent from the HTTP stack.

Supports MVS dataset access (sequential + PDS), JES job submission and spool retrieval via SITE FILETYPE=JES, and Unix file access via the UFSD client library.

Status: Functionally complete — the core feature set is implemented and the server compiles and links. We're now in the testing and stabilization phase. If you have an MVS 3.8j system and an FTP client, we'd love your help shaking out bugs.

SSI / cross-address-space
Filesystem Server

UFSD

Cross-address-space Unix filesystem daemon. Provides POSIX-like file I/O (open, read, write, mkdir, stat) on MVS via a subsystem interface (SSI). Used by both the HTTP stack (HTTPD + mvsMF) and FTPD.
⟩ mvslovers/ufsd

UFSD — What it does

MVS 3.8j has no Unix filesystem. UFSD adds one — a UFS370 filesystem server that runs as a Started Task and provides file I/O to any address space on the system via the MVS Subsystem Interface (SSI).

This is what makes /zosmf/restfiles/fs/* possible in mvsMF and what lets HTTPD serve static HTML/CSS/JS files. FTPD also uses the UFSD client library for Unix file transfers. Without UFSD, there's no place to store web content or USS files on MVS 3.8j.

Companion tool: ufsd-utils (Go) — creates, manipulates, and uploads UFS disk images from your workstation.

C runtime
Shared Foundation

crent370

Mike Rayborn's C runtime library for MVS 3.8j — provides TCP/IP sockets (DYN75), RACF authentication, JES2 interfaces, VSAM, and 200+ standard C library functions. Every project above depends on it.

FAQ

Why so many repos?
Each project has a distinct responsibility and can be used independently. HTTPD can serve web pages without mvsMF. UFSD can provide files to any program, not just HTTPD. FTPD is a completely standalone server with its own TCP listener. The Web UI is a pure frontend that only talks to REST APIs. Separating them keeps each codebase focused and testable.
Do I need all of them?
Depends on your use case. For Zowe/VSCode: you need HTTPD + mvsMF + UFSD. For FTP access: just FTPD. For a simple web server: just HTTPD + UFSD. All of them need crent370 as the C runtime.
What's the current focus?
HTTPD 4.0.0 (major cleanup), UFSD beta readiness (AP-4a milestone), FTPD testing and stabilization, and the mvsMF Web UI (Dataset Explorer + JES2 Spool Viewer). The mvsMF REST API itself is stable — most active work is in the infrastructure it depends on and the frontend it powers.
How do I get these programs?
Right now, all projects are built from source using mbt (MVS Build Tools) and require the crent370 C runtime on your MVS system. It's a hands-on process, but well-documented in each repo's README. Looking ahead, the goal is to ship everything pre-built as part of the MVS Turnkey distributions (TK5 and friends) and as packages for the MVP package manager — so eventually it'll be a one-liner to install.
Can I contribute?
Yes — and you don't need to be a C programmer. What we need most right now: Testers who can run the software on their MVS systems and report what breaks. Writers who can help with documentation, guides, and tutorials — English isn't the maintainer's first language, so native speakers who can make the docs clearer and more approachable are incredibly valuable. And of course, C, HLASM, Go, and JCL developers are always welcome. All repos are public on GitHub — check the Issues tab or ask in Discord.