Added two new flags, which target the scenario when you want to play some long-long sequence of actions, but at the same time you want to make it possible that it could be interrupted at any given moment.
E.g. you have a sequence of skills, which are cast inside WhileActive block. Now you want to be able to interrupt it at any given moment (e.g. by toggling hotkey to "Off" state). Previously it was not possible to do so without using Behavior Trees or Macros. But now, with these two new options, it is just a couple of clicks
As stated in the name, it changes behavior of the action - if, for any reason, Aura gets deactivated, the action will be stopped, even if the sequence has not been completed yet.
But abruptly stopping sequences of inputs is not really a great idea most of the time - if, for example, action has pressed some button and NOT released it yet, if it will be interrupted, the button will stay pressed, probably breaking something.
That is where the second flag comes in handy:
This flag remembers keys, pressed by the sequence and will release them automatically at the end of the action. So even if the action was interrupted in the very middle, there will be no "stuck" keys.
Adding two new nodes which should help to create better and smarter Macros!
Return node allows you to exit the macro whenever you want to, even right in the middle of some sequence of operations.
E.g. if character has died it does not make much sense to continue running the main loop.
Equivalent of return
operation in C#
Break is more niche - it allows you to exit the current scope (not the macro!), e.g. if you're inside some Repeat
loop, you can jump out of it if needed.
Equivalent of break
operation in C#
For the last couple of months I've been working on internal improvements of EyeAuras.Memory
namespace. The goal is to extend capabilities and to support
DLL injection and hooking of external processes.
For now, I am releasing only one bit of the entire set of improvements - LocalProcess
now has InjectDll
method which uses naive CreateRemoteThread based injection.
This will not help with kernel anti-cheat protected projects. We're already testing kernel-driver based solution which allows to counteract that inconvenience - I'll keep you posted.
DLL injection brings a lot of interesting and powerful things to the table - the topic is very niche and technical, but in the next 6-12 months I'll be trying to make it accessible to anyone with some C# skills, without deep understanding of internals.
Added a series of articles in Russian/English about programming using EyeAuras Blazor Windows API
Added a whole bunch of articles about Behavior Tree / Macro nodes. Note that most of these articles are available in both Russian and English.
C# Scripts
WaitFor
action now behaves exactly as Delay
if it does not have any links in itTesseract (numbers)
not initializing properlyLocalProcess
memory-reader breaking after multiple sequential reloadsTesseract (eng)
or Windows (rus)
ISharedResourceRentController
: IObservable<AnnotatedBoolean> IsRented
=> IObservable<AnnotatedBoolean> WhenRented
+ bool IsRented
.sln
filesFor the last couple of months I've been working on internal improvements of EyeAuras.Memory
namespace. The goal is to extend capabilities and to support
DLL injection and hooking of external processes.
For now, I am releasing only one bit of the entire set of improvements - LocalProcess
now has InjectDll
method which uses naive CreateRemoteThread based injection.
This will not help with kernel anti-cheat protected projects. We're already testing kernel-driver based solution which allows to counteract that inconvenience - I'll keep you posted.
DLL injection brings a lot of interesting and powerful things to the table - the topic is very niche and technical, but in the next 6-12 months I'll be trying to make it accessible to anyone with some C# skills, without deep understanding of internals.
Tesseract (eng)
or Windows (rus)
ISharedResourceRentController
: IObservable<AnnotatedBoolean> IsRented
=> IObservable<AnnotatedBoolean> WhenRented
+ bool IsRented
Tesseract (numbers)
not initializing properly.sln
filesAdded two new flags, which target the scenario when you want to play some long-long sequence of actions, but at the same time you want to make it possible that it could be interrupted at any given moment.
E.g. you have a sequence of skills, which are cast inside WhileActive block. Now you want to be able to interrupt it at any given moment (e.g. by toggling hotkey to "Off" state). Previously it was not possible to do so without using Behavior Trees or Macros. But now, with these two new options, it is just a couple of clicks
As stated in the name, it changes behavior of the action - if, for any reason, Aura gets deactivated, the action will be stopped, even if the sequence has not been completed yet.
But abruptly stopping sequences of inputs is not really a great idea most of the time - if, for example, action has pressed some button and NOT released it yet, if it will be interrupted, the button will stay pressed, probably breaking something.
That is where the second flag comes in handy:
This flag remembers keys, pressed by the sequence and will release them automatically at the end of the action. So even if the action was interrupted in the very middle, there will be no "stuck" keys.
Adding two new nodes which should help to create better and smarter Macros!
Return node allows you to exit the macro whenever you want to, even right in the middle of some sequence of operations.
E.g. if character has died it does not make much sense to continue running the main loop.
Equivalent of return
operation in C#
Break is more niche - it allows you to exit the current scope (not the macro!), e.g. if you're inside some Repeat
loop, you can jump out of it if needed.
Equivalent of break
operation in C#
Added a series of articles in Russian/English about programming using EyeAuras Blazor Windows API
Added a whole bunch of articles about Behavior Tree / Macro nodes. Note that most of these articles are available in both Russian and English.
In 8540 I've tried to fix the problem displayed on the screen below - some of the panels in the program overlap and create unpleasant and glitchy effect. The problem, unfortunately, is not on EA side, but in one of the core frameworks that is developed by Microsoft. In February, they've posted that the bug is finally fixed, so I've tried to upgrade to that version and for the last couple of weeks we've all been testing their fix. As a result of that testing, I have to rollback the change - the new version fixed overlap problem, but introduced 3 new problems:
So, for now, the airspace issue is back. I'll keep monitoring the situation.
What's New?
Over the past few months, most of the development has been focused on C# scripting. Many changes were introduced, primarily aimed at simplifying development and improving compatibility with various NuGet packages. The focus shifted from visual programming towards improving the user experience when working with scripts. The goal is to make it as easy and intuitive as possible to create mini-apps that do something useful — whether it be a small automation tool or a full-fledged bot. Under the hood, they will leverage the full power of EyeAuras, but on the surface — it's entirely up to you.
To support this, there's already a powerful feature set:
And that’s not all — crypto payment support and full UI hiding will be added soon, along with many other improvements. The mission is to drastically reduce the time between having an idea and getting your app running on a happy user's machine.
I believe mini-apps may become the primary way to fund the rest of EyeAuras development (discussed below). Time will tell how accurate that assumption is.
Nothing bad! Yes, upcoming months will likely be script-focused, but the roadmap includes:
This includes auras, triggers, and actions. The annoying lags when switching auras will finally be gone. Load times will improve by ~3–5 seconds. This migration will take about one year.
We already have Auras, Macros, Behavior Trees, and Scripts. Each has its strengths: Trees for bots, Auras for small automations (e.g., auto-pots), Macros for predefined action sequences, and Scripts as a universal hammer.
But there’s always room to grow. Inspired by Unreal Engine Blueprints, we aim to create a new visual programming tool: Blueprints. The idea is to place Auras and logic blocks on the same canvas (similar to BT editor) and define interactions between them — reactions to aura triggers, execution sequences, event logic, loops, etc. You can also call BTs and Macros from within.
This will take months, but initial prototypes may appear later this year.

This is the logical evolution of mini-apps — but with your app as the primary product, and EyeAuras becomes a toolkit.
Want to capture the screen? Done. Simulate input using 10+ methods? No problem. Embed C# scripting so users can write their own automation logic? Yes — EyeAuras scripting is now a standalone, mature engine.
Every capability in EyeAuras is available as a plug-in module.
The technical challenges have been solved. Early SDK versions can already be used in C# projects via NuGet. Licensing/distribution details are being finalized. The SDK will be commercial — one-time purchase, use it however and as much as you like. It will be a fully autonomous product, not tied to EyeAuras infrastructure.
Expect more info in the second half of the year.
📎 More info, examples, and scripts — here
DMA (Direct Memory Access) is a technology that allows reading or writing data directly to computer RAM without involving the CPU or OS. This makes it possible to access any process’s memory, even those protected by anti-cheat systems or technologies like Kernel Patch Protection (KPP), HVCI, and user-mode hooks.
ReadProcessMemory
, but behind the scenes, you’re talking directly to the PCIe bus.All of this is now available in the familiar EyeAuras scripting model — no need for HDL, PCIe knowledge, virtualization, or drivers.
IMemory
and IProcess
APIsNative ImGui integration is in progress — a modern, imperative-style UI option to complement the existing Blazor model.
ImGui ("Immediate Mode GUI") is a fast, lightweight UI library designed for tools in game engines. Used in many AAA editors, it’s known for its speed, ease of use, and live updates every frame.
In EyeAuras this means:
.csx
Here's an example (also covered in the guide):
AddNewExtension<ImGuiContainerExtensions>();
var osd = GetService<IImGuiExperimentalApi>()
.AddTo(ExecutionAnchors);
osd.AddRenderer(() =>
{
ImGui.Begin("My UI");
ImGui.Text("Control window flags and interaction behavior.");
var isActive = Trigger.TriggerValue ?? false;
if (ImGui.Checkbox("Is Active", ref isActive))
{
Trigger.TriggerValue = isActive;
}
ImGui.SameLine();
ImGui.TextDisabled("(Gets/Sets whether Trigger is active or not)");
ImGui.Separator();
if (Trigger.IsActive == true)
{
ImGui.TextColored(new Vector4(0f, 1f, 0f, 1f), "Trigger is currently ACTIVE");
}
else
{
ImGui.TextColored(new Vector4(1f, 0f, 0f, 1f), "Trigger is currently INACTIVE");
}
ImGui.End();
});
Now you can build truly standalone mini-apps inside a single .csx
file.
Usb2Kbd
is a hardware input emulator supported in EyeAuras since ~2021.
Now you can build your own for about $10 using an inexpensive board from AliExpress or Amazon.
Here’s a detailed step-by-step guide: Russian / English
The backend has also been improved and the settings window redesigned for a better user experience.
All action nodes (e.g., Wait, MouseMove, KeyPress, etc.) now support outputs. The linked node is executed only if the current one succeeds.
You can now set Target Window
and Input Simulator
for each tree or macro individually. As before, properties can still be set at the folder level — this adds flexibility, not a replacement.
You can now reference another Aura containing a C# Script
action — similar to referencing a different project in software development.
All types and classes defined in that script become available for use in your BTs or Macros.
This feature has been around for a while but was previously hidden from public view as it wasn’t stable enough.

Now you can define a C# class that analyzes the game — via memory or CV — and feeds data into your Behavior Tree. Instead of cluttering the BT with dozens of variables and conditions, you can encapsulate all logic in a single class (e.g., TheGame
).
Example bot that uses this model
More info here
Here’s a typical Razor component from before:
UserComponent.razor
@namespace GameGrind
@inherits BlazorReactiveComponent
<!-- your Razor/HTML code -->
UserComponent.cs
namespace GameGrind;
public partial class UserComponent : BlazorReactiveComponent {
// some code
}
That namespace (GameGrind
) used to be autogenerated, making it hard to copy/paste between scripts without conflicts.
Now, namespace declarations are optional — EyeAuras injects them at compile time. Less code = fewer headaches.
Fixed an issue with ComputerVision API
not loading models/images via HTTP. Two example bots were added:
This example shows how to:
ComputerVision
to find images, run ML, OCR, etc.SendInput
to simulate user inputOnScreenCanvas
to draw overlays
Same as above, but uses ImGui for UI and overlays.
.NET is the platform that powers EyeAuras. .NET 8 was chosen due to a new memory manager prototype that outperforms all previous versions.
EyeAuras traditionally prefers increased memory usage for higher performance, so a fast memory collector isn’t a luxury — it’s a necessity. This version still uses the older GC, but once the new GC is stable, it will be enabled.

The editor now uses the new UI framework — faster and more responsive.
Old Version:
New Version:
Macro rendering has been significantly reworked. You’ll notice the difference especially in large macros (50+ nodes). More updates are coming.
This long-standing bug caused panels to overlap — most notably C# Action overlapping Event Log. It’s known as the WPF Airspace issue and has existed for over 12 years. In Microsoft’s UI stack used by EyeAuras, it’s been around since July 2020.

After years of waiting, Microsoft finally fixed it. There was no real workaround, so we had to wait.
This fix is not just about better UI on small screens — it unblocks the long-awaited migration of triggers/actions to the new UI. Previously, everything had to be rewritten at once. Now, it can be done gradually — much more manageable.
PoeShared.Blazor.Controls
exposed by default (e.g. ReactiveButton
)ReadManaged<T>
— slower than Read<T>
, but honors MarshalAs
ReadExports
now returns human-readable export name along with mangled symbol