Open source · MIT · Unity 6

FlowIoC.

A signal-driven IoC framework for Unity, for the people writing the game and the coding agents working beside them.

openupm add com.birrstudio.flowioc.core

v1.34.166 releases since August 2026Unity 6000.0+

01 · Built for coding agents

An architecture your assistant has already read.

An architecture is a set of rules the compiler cannot enforce. FlowIoC writes them down twice: once as editor tools for the team, once as files for the assistants they work with.

01

Rules where assistants already look

A versioned rule block in AGENTS.md, with CLAUDE.md pointed at it: the files Claude Code, Codex, Cursor, Zed and Gemini CLI read. The editor keeps it current and never touches a line outside its markers.

<!-- FLOWIOC:BEGIN version=… -->
02

A skill for each kind of work

Eight skills land in .claude/skills when the Editor opens: scaffolding, commands, screens, connectors, systems and services, models, root order, data types. An assistant handed the shape of a Command does not read half the repository to infer it.

.claude/skills/flowioc-controllers/SKILL.md
03

A card on every module

Each MODULE.md says what the module is for and the words someone would search for. A generated block lists its signals and assemblies, and every card is gathered into one MODULES.md.

Assets/Plugins/FlowIoC/MODULES.md
04

One file tells the whole flow

A Context declares every step an operation runs, in order. Reading it is enough to know what happens, without opening each Command.

.ToSequence<SavePlayerCommand>()
05

The same generators, from a terminal

The tools a person clicks can be driven from a terminal against an open Editor, so an agent lays a module out exactly the way the team does.

unity command eval '…'
06

Boundaries that hold

Modules never reference one another; a Connector is the only place two meet. The rules name the usual slips: logic in a Context, reaching into another module's model, [Inject] on a field.

InjectionBinderCrossContext.GetInstance<T>()
02 · In practice
An illustration of a session, not a recording.

Three short reads instead of a search.

  1. 01

    The rules

    AGENTS.md tells the assistant what is never allowed, whatever the task.

  2. 02

    The right module

    MODULES.md points at the module that owns the work.

  3. 03

    The right skill

    The skill gives the shape of a Command and how a sequence is bound.

03 · How a signal moves

Signals in, signals out. Nothing else crosses.

  1. Mediatorturns a tap into a signal
  2. Incomingwhat the module accepts
  3. Commandone unit of work
  4. Modelstate, kept valid
  5. Outgoingwhat the module announces
  6. Connectorthe only crossing
  7. Another modulenever referenced directly

The dot is the signal.

PlayerContext.csread the Context, know the flow
CommandBinder.Bind(_signals.Incoming.LeaveMatch)
    .ToSequence<IScreenService.Commands.HideByTag>(ScreenTag.GroupB)
    .ToSequence<IScreenService.Commands.UnloadByTag>(ScreenTag.GroupB)
    .ToSequence<IAssetService.Commands.ReleaseGroup>("match");
04 · For the team

The structure is the easy path.

Create Module

Folders, assemblies, Root and Context, laid out in one step.

Tools › FlowIoC › Create New Module

Module Scanner

Reports what every module actually looks like, and repairs what is safe to repair.

Tools › FlowIoC › Module Scanner

Flow Console

Traces a signal from dispatch to the Command that handled it, without adding a log line.

Tools › FlowIoC › Flow Console

Model Viewer

Live model state while the game runs.

Tools › FlowIoC › Model Viewer

Agent Scanner

The rule block and the skills in one window: green when current, amber when out of date.

Tools › FlowIoC › Agent Scanner

Module Library

Ready-made modules, installed into your project and yours to change.

Tools › FlowIoC › Module Library
05 · Modules

Start with what every game needs.

Bundled

  • ScreenScreens and popups: layers, pooling, addressable loading, open and close animations
  • PoolConfig-driven object pooling with groups and prewarming
  • AssetOne door to Addressables, with owner-scoped release
  • ConsoleA filterable console, wired into the framework itself
  • ExtensionSmall maths, flag and time helpers

Ready-made

  • CounterNamed countdowns and timers with a pluggable time source
  • World PointerUI that follows a 3D object and clamps to the screen edge
  • HapticThe nine iOS haptic presets, on iOS and Android
  • Local SaveScriptableObjects saved to one file, optionally encrypted
  • Asset DeliveryPlay Asset Delivery and iOS Background Assets

06 · Get started

OpenUPM Recommended

openupm add com.birrstudio.flowioc.core

An upgrade is a version number in the Package Manager.

Git URL

https://github.com/BirrStudio/FlowIoC.git#1.34.1

Always pin a tag.

Git submodule

git submodule add https://github.com/BirrStudio/FlowIoC.git Packages/FlowIoC

For working on FlowIoC itself.

07 · Community

Built in the open, together.

Questions, ideas and the things you make with FlowIoC belong in GitHub Discussions. MIT licensed, made by Birr Studio.