# SubZero MD is a WhatsApp multi device bot you deploy from a panel

> SubZero MD is a Node.js WhatsApp bot built on the Baileys family of libraries, with deployment presets for Heroku, Render, Koyeb, Railway and Fly. It ships a control panel, one time session pairing through an external service, and a large surface of third party hosting integrations, and the author is explicit that it is for educational use.

**mrfrankofcc/SUBZERO-MD** — WhatsApp Multi Device Bot, Made On Earth By Darrell M ( Mr Frank ).  ❄️

- Repository: https://github.com/mrfrankofcc/SUBZERO-MD
- Website: https://sessions.subzero.gleeze.com
- Stars: 786 · Forks: 2,266
- Language: JavaScript
- License: not declared
- Published: 2026-10-20 · Updated: 2026-10-20 · Language: en
- Canonical page: https://hysenlabs.com/projects/mrfrankofcc-subzero-md

## A WhatsApp bot that plugs into the unofficial client

SubZero MD is described as a feature rich, multi-platform WhatsApp bot built on Baileys, engineered for speed, stability and style, and maintained by MR FRANK OFC. The library it sits on is angularsockets, a Baileys derivative published on npm under the name @angularsockets/baileys, and the repository topics name the family of libraries the project builds on: baileys, baileys-bot, whiskeysockets and angularsockets, alongside panel, subzero and bugbot.

The distinction that matters is that this is not the official WhatsApp Business API. A Baileys based bot speaks the WhatsApp Web protocol by connecting to an existing account's session, which is why the project needs a session identifier at all. Nothing in the repository claims official support, and the topics list the protocol libraries rather than any business API client.

The framing in the README is that of a hobby project with a strong personality, with a version history that runs to V7.0.0, a 7.0.0 beta badge, a control panel and a session service. The homepage for sessions is sessions.subzero.gleeze.com, and the panel and file download are hosted under the author's own domains.

It is a JavaScript project with the MIT licence declared in package.json, though the repository itself carries no LICENSE file and the licence field in the repository metadata is empty.

## Getting a session is the part you have to think about

The README has a whole section for it, under the heading about getting your session ID, with a link to sessions.subzero.gleeze.com. The manual deployment instructions then say to add your SESSION_ID and edit the .env file, and warn that the SESSION_ID must be set before running.

That is the mechanism, and it is worth being explicit about what it means. A multi device WhatsApp bot has to be linked to a phone number, and Baileys does that by serialising an authenticated session. In this workflow the pairing happens on a site hosted by the project author, and the resulting identifier goes into your .env file. That means the account linking is mediated by a third party service rather than done entirely on your own machine.

The alternatives are visible in the project itself but are not what the quick start points at. The package scripts include a reset-session command that removes the session directory directly from the filesystem, and a start:fresh script that runs a data reset before starting, which suggests a local pairing path exists alongside the hosted one. The repository also has a reset-data.js entry point and a setup script that runs it.

For anyone evaluating this, the honest framing is that the SESSION_ID flow is the single most important thing to understand before deploying, because it is where account trust passes through infrastructure you do not control.

## One repo, six hosting presets

The deployment story is the strongest part of the project. The quick deploy table lists Heroku, Render, Koyeb, Railway, TalkDrove, SubZero Nodes and a panel and file download from the repository archive.

The repository files explain why. There is a Procfile, which is what Heroku and similar platforms read to decide what command to run, an app.json for Heroku button deployments, a render.yaml for Render, a koyeb.json for Koyeb, and a fly.toml for Fly.io. That is five platform specific manifests, each one line of configuration, which is what makes the one click deploy buttons work.

The Dockerfile takes a different path. It builds from node:20-bullseye, installs ffmpeg, webp and git with apt, clones the repository, installs dependencies with yarn using a network concurrency of 1 and --ignore-engines, exposes port 7860 and sets NODE_ENV to production:

```dockerfile
FROM node:20-bullseye
USER root
RUN apt-get update && \
    apt-get install -y ffmpeg webp git && \
    apt-get upgrade -y && \
    rm -rf /var/lib/apt/lists/*
USER node
```

The presence of ffmpeg and webp is the clue about what the bot does with media. Those are the tools for handling audio, video and image conversion, which is consistent with a bot whose keyword list includes sticker-bot and with a plug-in directory in the package manifest.

The end point of the whole arrangement is the panel. The topics list panel, and the deployment table has a separate SubZero Nodes entry pointing at subnodes.gleeze.com, so the deployed bot is meant to be controlled through a web interface rather than only through a terminal.

## The scripts show what the project expects of its host

The package scripts describe the operational assumptions better than the README does. The plain start is node index.js, and there is an optimised variant that caps the old space size at 512 megabytes, turns on --optimize-for-size and sets a garbage collection interval of 100, which tells you the author expects the bot to be memory constrained on small hosts.

There is a dev mode using nodemon watching .js files, and a set of pm2 scripts for start, stop, restart, logs and monit, so a long running deployment on a VPS is an expected use case.

Then there is the maintenance surface. setup and reset-data both run node reset-data.js, reset-session removes the session directory with a recursive force delete and prints a confirmation, clean removes node_modules and the lock file, and reinstall does clean followed by install.

The test setup is vitest, with separate unit and end to end suites, and the package requires Node 20 or newer. The keywords list includes baileys, multi-device, whatsapp-automation, nodejs and sticker-bot, and the funding field points at a personal GitHub sponsors page rather than an organisation, which is a small signal about who maintains it.

## A version cadence of major numbers and a beta badge

The release history is unusual. V7.0.0, named The Ultimate v7, was tagged on 2026-04-02, v6.0.0, the Elite Version 6, on 2025-12-26, and v5.0.0, the Ultimate Version 5, on 2025-08-17.

So the project ships a major version every few months, with a name attached to each one, and the README badge reads v7.0.0 beta. The last push was on 2026-04-30, and the repository is not archived.

That pattern has a practical consequence. A project that renumbers itself and rebrands each release is not promising a stable configuration interface, and a deployment that worked on v5 is not guaranteed to work unchanged on v7. Anyone running this in production should pin a version and expect to read the diff when it moves.

The panel and the session service live on the author's own domains rather than being self hosted by the user, which is the same continuity question in a different place. The homepage for sessions, the panel download, the SubZero Nodes hosting and the community channels all point at infrastructure that the repository does not contain.

## What the notice and the credit rule actually restrict

The README ends with a notice that has three parts, and each one is a constraint on how you can use the project.

It is built for educational purposes only. Do not misuse the software. And redistribution without credit to the original author is strictly prohibited.

Those words matter more than they might appear to. The project provides a control panel, a session pairing service, hosting on the author's own nodes, and a WhatsApp bot, which is a combination where the point of contact with an end user is a phone number on someone's account. The educational framing limits what the author is endorsing, and the credit condition is a separate requirement from the MIT licence in package.json, since the licence permits redistribution with its own notice while this README asks for attribution in a stronger form.

The README also opens with a comment that says not to copy the README without credits, which is a reasonable request and worth honouring if you fork the project.

For an adopter, the practical questions are what use of a WhatsApp bot is consistent with the stated educational purpose, and whether the platform you deploy on accepts an unofficial client talking to WhatsApp on your behalf. The project does not answer the second one, and the answer to the first is a judgement about your own use rather than a fact in the repository.

What is in the repository is a working bot with a panel and a wide set of deployment manifests, and that is a legitimate thing to read, run and evaluate.

## Conclusion

SubZero MD suits someone who wants a self hosted WhatsApp bot for their own account, with the pairing, panel and hosting wiring already arranged and a Dockerfile that builds without a local Node setup. It is the wrong tool for a business that needs a supported WhatsApp channel, since the whole design depends on an unofficial library and a session issued by a third party service, and the project itself restricts redistribution. Before deploying it, read the notice about educational use and about credit, check the SESSION_ID flow carefully, since the pairing happens on a site you do not control, and confirm the platform you pick has a Node runtime that matches the >=20.0.0 engine requirement.

## FAQ

### How do I deploy SubZero MD?

Clone the repository, run npm install, add your SESSION_ID to the .env file and start it with npm start. The README also lists one click deploy buttons for Heroku, Render, Koyeb, Railway, TalkDrove and SubZero Nodes, backed by a Procfile, app.json, render.yaml, koyeb.json and fly.toml in the repository.

### Where does the WhatsApp session ID come from?

The README directs you to sessions.subzero.gleeze.com to get a session ID, and the manual deployment steps say to add the SESSION_ID to the .env file before running. The package scripts also include a reset-session command that removes the session directory locally.

### What are the system requirements for SubZero MD?

The package requires Node 20 or newer, and the Dockerfile builds from node:20-bullseye with ffmpeg, webp and git installed, exposing port 7860. There is also an optimised start script that caps the old space size at 512 megabytes for smaller hosts.

## Sources

- [Issues](https://github.com/mrfrankofcc/SUBZERO-MD/issues)
- [mrfrankofcc/SUBZERO-MD on GitHub](https://github.com/mrfrankofcc/SUBZERO-MD)
- [Project website](https://sessions.subzero.gleeze.com)
- [README](https://github.com/mrfrankofcc/SUBZERO-MD/blob/main/README.md)
- [Releases](https://github.com/mrfrankofcc/SUBZERO-MD/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/mrfrankofcc-subzero-md
