Useful software.
Thoughtful details.
I'm Anti, a software engineer building tools,
interfaces, and experiments in AI.
A thing for systems. An eye on aviation.
- Version
- v4.2.0
- Stars
- 100
- Forks
- 6
- Release downloads
- 100,364
A Windows desktop editor for Roblox FastFlags. Search values, keep JSON presets, and fetch a matching client when the install is behind.
Themes
Legacy. One of 12 bundled UI themes.




Notes
The idea behind the tool.
Less time in configuration.
More clarity in the details.
A Windows desktop editor for Roblox FastFlags. Search and inspect values, keep presets as JSON, and download a matching Roblox client when the install is behind. Twelve bundled UI themes. Source and installer are on GitHub.
Built for learning and personal configuration, not as a commercial service.
Showcases
See the product in motion. Two short demos.
Change flags mid-game. One button.
Bind any flag to a key or mouse button and reshape your game without ever alt-tabbing. FFM is the one and only FastFlag manager that flips flags live, in-game, with a single press - no restart, no menu diving.
Open video ↗Find the right build.
A version-check workflow demo: check the installed Roblox client, identify a mismatch, and download the matching build.
Open video ↗
Copy flag name: right-click a flag in the Editor and the clipboard icon sits next to the orange name (wraps with long names).
- Copy flag name: right-click a flag in the Editor and the clipboard icon sits next to the orange name (wraps with long names).
- Black & White UI theme: flat black surfaces, or full white with Light Mode. No color accents. Last item in the UI Theme list. Light Mode stays available on this skin.
- Settings and Presets scrollbars: inset like the Editor so the window-edge resize strip no longer steals the thumb or wheel.
- Pasted DFlag… names: a leading DFlag that is not a real prefix (FFlag / DFFlag / FInt / DFInt / …) is stripped on import and when user_flags.json loads, so…
- Legacy is first in the UI Theme dropdown. Black & White is last.
- App version is 4.2.0.
Uninstall user data: after the usual Yes/No prompt, Setup shows a User data page on the same wizard as the rest of uninstall.
- Uninstall user data: after the usual Yes/No prompt, Setup shows a User data page on the same wizard as the rest of uninstall.
- Update Now: exits as soon as Setup starts so the installer can replace FFM.exe.
- Advanced version card: no longer flashes "Roblox version fixed" then snaps back to mismatch.
- Flag-file saves: no longer bump a folder timestamp, so an older install or third-party launcher tree is not picked as the current client.
- Available-flags sidebar: no longer stays empty until you type a search character. The first empty lookup was cached before the flag list finished loading.
- Leftover Roblox builds: Launch, Play, and Fix Roblox remove extra version-* folders under stock Roblox once the current production player is on disk and Roblox is closed.
- Launch and Play stay on production. FFM starts RobloxPlayerBeta.exe from the current production folder, writes the production channel so the player does not hop deploys, and…
- App version is 4.1.0.
Release details are available on GitHub.
- Release details are available on GitHub.
Bootstrapper-only installs get flags. With no stock Roblox install, FFM merges into the newest bootstrapper version directory instead of failing the JSON step with no message.
- Bootstrapper-only installs get flags. With no stock Roblox install, FFM merges into the newest bootstrapper version directory instead of failing the JSON step with no message.
Automatic Launch: opt in under Settings → Advanced to make FFM the Roblox Play handler.
- Automatic Launch: opt in under Settings → Advanced to make FFM the Roblox Play handler.
- Turbo enforcement: a tight read-before-write loop catches a reverted flag within one frame. Default for new installs.
- FPS unlocker: writes FramerateCap = 9999 on GlobalBasicSettings_13.xml and marks the file read-only.
- Cherry Blossom theme, themed loading screens, and persisted Matrix animation speed.
- Apply sound: a chime on manual apply and the first auto-apply. Toggle and volume live in Appearance.
- Right-click a preset to open the settings menu at the cursor. "Show in folder" reveals presets.json in Explorer.
- Kill Switch: pause every flag at once with a global hotkey and a one-click Restore banner, without restarting Roblox.
- Revert to Original: right-click a flag to put its original in-game value back without disabling it.
The logo's "NNK+ FastFlags Available!" count is generated from data/FFlags.hpp by update_version.py at release time (was a hardcoded "13K+"), so it stays in sync with the actual…
- JSON-ONLY log lines now include region detail (flag type, address, page protection) instead of just the flag name, so an unwritable pointer can be diagnosed from the log…
- FPS unlock (TaskSchedulerTargetFps) applies again.
- The logo's "NNK+ FastFlags Available!" count is generated from data/FFlags.hpp by update_version.py at release time (was a hardcoded "13K+"), so it stays in sync with the actual…
Room for curiosity.
Useful tools, systems behind the scenes, and a few experiments in how things feel.
LAUNCHER WINDOWS UTILITY
Ignition
A quieter start to Windows.
Queue the apps, files, folders and links you want at sign-in. Give each a delay, watch the sequence, and let the launcher get out of the way.
- Rust
- Tauri 2
- JavaScript
How we built it
Two windows
Autostart passes --launch. That path opens a small splash, waits the login delay (at least 120ms, at most 60s), then walks only the enabled items. Each item can wait up to two minutes of its own. A stagger sits between them, 350ms by default and capped at five seconds. Progress events fire per item, then the process exits.
The picker is a different window. Launch now runs the same queue on a worker thread and leaves the UI open so you can keep editing. Drag-and-drop and the native file dialogs add paths through Tauri commands.
The queue
Targets become app, file, folder, or url from the path. Apps with extra args spawn as a detached Windows process with no console window; shortcuts, files, folders, and links go through a detached shell open. Access denied and missing paths come back as plain English. One failure does not stop the rest.
Settings live in launch.json under the app config directory. Writes go to a .tmp file first, then rename over the original. Tagged builds are set up for a current-user NSIS installer.
MIRROR FFM INFRASTRUCTURE
Roblox Offsets / ALL
A fallback needs evidence.
A reliability layer for FFlag Manager. Public offset sources are mirrored on a schedule, compared against a baseline, and published with the verification results that help FFM choose a fallback.
- Python
- GitHub Actions
- Bash
How we built it
Mirror, then doubt
FFM needs another route when an offset source is down. Every six hours a GitHub Action curls five public endpoints. A file only replaces the previous body if it has the expected namespace and at least 500 uintptr_t declarations. A failed sanity check keeps the last good file.
Sundays, upstream dumper sources are snapshotted with license notes. Those dumpers stay their authors' work. The contribution here is the mirror, the checks, and the paper trail.
What verified means
imtheo is the baseline. Other mirrors are compared for version skew, for Pointer / ToFlag / ToValue struct offsets, and for a 99% RVA overlap on shared flag names. true, false, and unknown all stay in meta.json next to the mirrored data.
If three or more mirrors disagree, imtheo itself is marked unknown so FFM does not treat a shaky baseline as proof. A green download is never the whole story.
TRAY APP NETWORKING UTILITY
Discord Bypass Turkey
Getting from Starting to connected.
A Windows tray app for when Discord's website opens but the desktop client or voice connection stalls. It coordinates separate startup and voice paths for networks affected by ISP filtering in Turkey.
- C# / .NET 10
- WinForms
- WinDivert
How we built it
Two engines, one tray
The default hybrid profile starts GoodbyeDPI for desktop TCP and Zapret's winws for UDP/STUN voice. Start is fail-closed: missing binaries and SHA-256 mismatches abort. Orphan WinDivert clients are killed before launch. Firewall rules are warn-only.
Ready is honest. GoodbyeDPI counts as ready if it is still alive after a short settle. winws prefers a WinDivert initialized line. Hybrid needs both processes. If winws dies immediately, GoodbyeDPI is stopped too. This is local packet handling, not a VPN.
What connected means
HTTP 200 on discord.com is not connected. The real gate is a visible Discord window at least 700×480. Private or captive DNS answers fail the probe. The check compares resolvers and does not change the adapter DNS.
Voice is armed, unproven, until you join a channel. The code refuses to call that a pass. Packet engines are upstream GoodbyeDPI, Zapret, and WinDivert, credited in the repository.
And a little play.
TYPE, MOTION & INTERACTION
A name, in particles.
Letters become a surface. A little movement gives it life.
A gesture, in characters.
A horse with a life of its own. Move your cursor through the marks.
Curious about
what’s underneath.
I like making complex things feel a little more understandable.
My interests move between software engineering, low-level tooling, and practical experiments in AI and machine learning. I enjoy the small decisions that make an interface feel considered, and the systems that make it work.
Aviation management is another part of that curiosity: operations, interdependent systems, and all the quiet work behind something that looks effortless.
More of what I'm building ↗- Python
- TypeScript
- Three.js
- Canvas
- WebGL
Something interesting
in mind?
A project, a question, or a good conversation. Let’s talk.
GitHub / @4anti ↗