fpui:a runtime mod framework
for native apps.

customize native apps with themes, plugins, and checked machine-code patches. each build gets an adapter; the engine works independently of its ui framework.

in early development. currently demonstrated on macos arm64.

features

live themes

change app colors at runtime, using named roles mapped by an adapter.

theme docs

wasm plugins

run webassembly plugins on hooks each app defines, with explicit permissions, memory limits, and an execution budget.

plugin docs

runtime patches

hook events, change arguments and return values, and patch bytes in memory. expected bytes are checked before each change.

patch reference

native ui experiments

draw primitives in an app’s own scene and add routed settings entries. proven on one pinned build; reusable tooling is still in progress.

native ui docs

tooling

site discovery

fpui-discover

find sites by symbol, offset, or referenced string, and generate byte signatures.

discovery docs

patch monitor

fpui-monitor

check an adapter’s color, event, and byte-patch sites against an app build without launching or changing it. export reports as json.

monitor docs

app wrapper

fpui-install

configure a macos app bundle to load the agent on normal launches, or remove that configuration.

wrapper docs

plugin sdk

fpui-plugin-sdk

write rust plugins with the plugin! macro and compile them to webassembly.

sdk docs

target adapters

fpui-target

describe an exact app build and map its supported colors, functions, and patches.

adapter docs

faq

why is fpui a separate project from maycord?
while building maycord, we found that the patching engine could be reused across native apps. we split it out early as fpui so other projects can build on it, with adapters for each supported app and build.
does fpui work with every native app?
not automatically. each app needs an adapter that maps sites in its supported build, and those sites need calling conventions the patch backends support. its platform and architecture need loading and patch backends; macos arm64 is the demonstrated platform. the app’s signing policy can also prevent loading or code writes. the engine does not change for a different ui framework, but each new target needs its own mappings.
where should i start?
start with the development setup, then create a theme or plugin. if you are adapting an app, use the discovery tool to find sites and the monitor to check them against a build.
does fpui change app files?
runtime patches apply in memory. the optional macos wrapper changes bundle metadata and re-signs the app, while offline patching changes an executable copy. native ui experiments run on a re-signed copy of the app. the setup guide explains what each method changes.
where can i ask questions or get updates on fpui?
join the discord to ask questions, follow development, and hear about releases.
what is the license?
the framework is GPL-3.0-or-later. this website is a separate MIT-licensed project.