# Cog: Dear ImGui debug tools you drop into an Unreal project

> Cog is a set of debug tools for Unreal Engine built on Dear ImGui, giving an in-game set of windows for abilities, attributes, behavior trees, cheats and collisions, plus a console and server-side debug control. It runs in the editor and in packaged builds, and the integration method changed recently, so upgrading means reading the integration guide.

**arnaud-jamin/Cog** — Cog is a set of debug tools for Unreal Engine built on top of Dear ImGui

- Repository: https://github.com/arnaud-jamin/Cog
- Stars: 633 · Forks: 98
- Language: C++
- License: MIT
- Published: 2026-10-21 · Updated: 2026-10-21 · Language: en
- Canonical page: https://hysenlabs.com/projects/arnaud-jamin-cog

## An ImGui layer over the systems a gameplay programmer debugs

Cog is a set of debug tools for Unreal Engine built on top of Dear ImGui, the immediate mode GUI library, and the point of it is to put an interactive window over engine state while the game is running. The list of what it provides covers the core engine, Enhanced Input, Gameplay Abilities and AI, together with window management that keeps persistent configuration and layouts, C++ and Blueprint functions to log and debug draw within log categories, control over the server for debug draw, logging, spawning and cheats, and NetImgui support for debugging a game server. The audience is gameplay and systems programmers who currently infer state from log output. Instead of adding a print statement, rebuilding and restarting, you open a window and look at the live values. The project is C++, MIT licensed, and the repository is laid out as an Unreal project, with Cog.uproject at the root next to Plugins/, Source/, Platforms/, Config/, Content/ and RawAssets/, plus a TODO.txt.

## Windows for abilities, attributes, trees and blackboards

The window catalogue is the substance of the tool, and the README documents each one. The Abilities window shows the gameplay abilities of the selected actor, and you can force an ability on or off by clicking its checkbox, remove one with a right click, or open it in a separate window, and a Give Ability menu grants one manually from a list defined in a data asset. The Attributes window shows gameplay attributes, sortable by name, category or attribute set, with values above the base shown in green and values below it in red, and a Show Only Modified option that filters to attributes carrying modifiers. The Behavior Tree window displays the behavior tree of the selected actor and the Blackboard window displays its blackboard. The Effects window shows the gameplay effects on the selected actor, and hovering one reveals its modifiers, the gameplay tags it grants and its remaining time. The Build Info window reports build information such as build version, changelist, date and target. Two collision tools exist as well, a Collisions Tester for testing collision queries and a Collisions Viewer for inspecting collisions in the world, which the README says can be used to understand what object is blocking a raycast.

## Cheats are executed on the server, not on the client

The Cheats window is the one with a design decision behind it that matters more than the rest. Cheats applied to the selected actor are replicated to the game server to be executed, rather than being applied locally, which keeps the authority model of the game intact while you debug it. The window also carries key modifiers that decide which actor a cheat touches: CTRL applies it to the controlled actor, ALT to the allies of the selected actor, and SHIFT to its enemies. Cheats applied to the local player character can optionally be reapplied automatically, which is a convenience for cases where the server state is reset by a respawn or a round. Cheats themselves are defined in a data asset, and Cog ships two default cheat executions, Apply Effect and Activate Ability, with cheat executions also definable in blueprint. The Action window, which shows the state of an input action, follows the same principle from the input side: it can inject inputs to help debugging, and the README notes that injected inputs are not affected by losing window focus when breaking in the code, unlike real inputs.

## Windows act on a selected actor, which you pick explicitly

Many of the windows display their contents based on a selected actor, and the selection is a deliberate act rather than a side effect. The selector actor can be chosen using the Engine/Selection window or widget, which means the debugging session has a subject that you set rather than whatever happened to be focused. That matters for the ability, attribute, effect, behavior tree and blackboard windows, all of which describe one actor's state, and it is also what the cheat modifiers build on, since CTRL, ALT and SHIFT reinterpret the selection relative to the controlled actor, its allies and its enemies. The main menu bar carries the general tools rather than actor state. Widgets such as Stats for frame rate and ping, Time Scale, Actor Selection and Console can be added from the Window/Widgets menu, and the console widget can optionally take the keyboard focus when the main menu bar is shown. The Console window itself works as a replacement for the Unreal console command, exists both as a window and as a widget, is navigated with the up and down keys or Tab and Shift-Tab, and has its own settings menu reachable by right-clicking the widget.

## Opening the menu, saving layouts and binding keys

Getting Cog on screen takes one key or one command. Pressing the F1 key or using the Cog.ToggleInput console command opens the ImGui main menu. Window management comes next, and it is persistent rather than ad hoc, with configuration and layouts kept between sessions. The Command Bindings window is where keyboard shortcuts are attached to console commands, and the README notes that the bindings are saved in Saved/Config/WindowEditor/Input.ini in the editor, so the file to look at when a shortcut is not doing what you expect is that one. The Debug Settings window controls how the debug display is drawn, and the Gamepad window shows the state of the gamepad. There is also a documented link to a video and a sample executable for Windows, which the README lists as 500 MB, so evaluating Cog without building an Unreal project is possible but not cheap in download size.

## Server side debugging goes through NetImgui

The server-facing half of Cog is what distinguishes it from a purely local debug view. The README lists control over the server regarding debug draw, logging, spawning and cheats, and separately lists NetImgui support to ease the debugging of the game server. That combination is the point: a dedicated server has no viewport, no local player and no obvious place to put an ImGui window, so the debug view is normally driven from a client instead. With NetImgui, the server's ImGui context is rendered and forwarded to a viewer, which means the same Cog windows can be pointed at server-side state. For a project running dedicated servers, this is what makes Cog usable at all in that configuration, and it is also why the cheats are replicated rather than executed locally, since the interesting state lives on the server. The README does not describe the transport or the setup steps for NetImgui, so the integration guide and the sample executable are where the detail has to come from.

## Integration changed, and shipping builds ship without Cog

Two operational facts decide whether Cog can go into a project. The first is at the very top of the README, in an important callout: the way Cog integrates into a project has changed, and anyone who updates Cog is told to read the integration guide. That is the kind of note that only appears when a plugin changes how it is wired into the module system or the build, and it means an existing integration should be treated as needing rework rather than a version bump. The second is the shipping build rule. Cog can be used both in the editor and in packaged builds, and it is disabled by default on shipping builds, which is the correct default for a tool that exposes cheats and engine internals. A development or test build is the intended target. On the maintenance side, the repository is not archived, the last push was on 2026-09-28, and there are no GitHub releases, so the only fixed points are commits. The MIT licence means Cog can be embedded in a commercial game as long as its copyright notice is kept, which matters because the plugin compiles into the shipped binary.

## Conclusion

Cog fits teams that debug gameplay systems on a running game, especially those using the Gameplay Abilities and Enhanced Input stacks, since it exposes abilities, attributes, input actions and collisions as windows instead of log output. It is the wrong tool for a project that does not want an ImGui layer compiled into its builds, because Cog is a plugin with C++ and Blueprint entry points that ship inside the game. Before upgrading an existing integration, read the integration guide, since the README opens by warning that the way Cog integrates into a project has changed, and confirm the shipping build behaviour, where Cog is disabled by default.

## FAQ

### How do I open the Cog menu in an Unreal project?

Press the F1 key or use the Cog.ToggleInput console command to open the ImGui main menu. Cog works both in the editor and in packaged builds, and it is disabled by default on shipping builds.

### How are cheats applied in Cog?

Cheats are replicated to the game server to be executed rather than applied locally. CTRL applies a cheat to the controlled actor, ALT to the allies of the selected actor, and SHIFT to the enemies, and cheats can be defined in a data asset or in blueprint.

### Can Cog debug a dedicated game server?

Yes, through NetImgui support, which the README lists as a way to ease debugging of the game server. Cog also gives control over the server for debug draw, logging, spawning and cheats.

### What changed when I update Cog?

The README opens with a notice that the way Cog integrates into a project has changed, and tells anyone who updates it to read the integration guide. An existing integration should be reviewed against that guide rather than assumed to keep working.

### Where are Cog's keyboard bindings stored?

The Command Bindings window attaches keyboard shortcuts to console commands, and the README states that those bindings are saved in Saved/Config/WindowEditor/Input.ini in the editor.

## Sources

- [arnaud-jamin/Cog on GitHub](https://github.com/arnaud-jamin/Cog)
- [Issues](https://github.com/arnaud-jamin/Cog/issues)
- [License: MIT](https://github.com/arnaud-jamin/Cog/blob/main/LICENSE)
- [README](https://github.com/arnaud-jamin/Cog/blob/main/README.md)

---

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