Keep your Roblox window awake.
Kestrel is a terminal-only Windows utility that periodically performs configurable OS-level keyboard actions. It uses pynput for normal keyboard input and does not inject into Roblox, inspect Roblox memory, modify Roblox files, hook game internals, or manipulate network traffic.
- Windows 10/11
- Python 3.11 or newer
- A normal terminal such as Windows Terminal, PowerShell, or Command Prompt
From the Kestrel project directory:
py -3.11 -m venv .venv
.venv\Scripts\activate
python -m pip install --upgrade pip
pip install -r requirements.txtpython main.pyOptional configuration path:
python main.py --config path\to\config.jsonShow the configuration guide without starting the dashboard:
python main.py --config-helpKestrel automatically creates config.json with safe defaults if it is missing.
Example:
{
"enabled": false,
"interval": 600,
"randomization": 10,
"actions": [
{
"key": "w",
"duration": 1.0
},
{
"key": "s",
"duration": 1.0
},
{
"key": "space",
"duration": 0.2
}
],
"target_window": "Roblox"
}Boolean. When true, Kestrel starts active after initialization. When false, it starts stopped.
Number of seconds between action cycles.
600= every 10 minutes300= every 5 minutes60= every minute10= every 10 seconds
Non-negative number of seconds. Each interval is randomly adjusted by approximately ±randomization.
0 disables randomization.
An ordered list. Every action has:
key: a supported keyboard keyduration: how long that key is held, in seconds
interval and duration are intentionally different:
INTERVAL = time between cycles
DURATION = how long an individual key is held
Optional text matched against the focused Windows window title. With:
"target_window": "Roblox"Kestrel only sends keyboard input when a foreground window title contains Roblox.
Use:
"target_window": nullto disable window filtering.
Letters a-z, digits 0-9, plus:
spaceenterescapetabshiftctrlaltbackspacedeletehomeendpageuppagedownleftrightupdownf1throughf12
S— startP— pauseX— stopR— reload configurationI— informationL— activity logO— openconfig.jsonT— theme menuQ— quit
F8— toggle active/inactiveF9— emergency stop and release held keys
Press T from the dashboard to open the terminal theme menu. Changes apply immediately and are saved to theme.json.
Built-in themes:
- Natural Green
- Forest
- Ocean Blue
- Warm Amber
- Rosewood
- Monochrome
Choose C in the theme menu to open theme.json in the default Windows text editor and customize every palette color using #RRGGBB values. Close the editor and Kestrel reloads the theme automatically.
R restores the default Natural Green palette. The terminal's physical background color remains controlled by the terminal emulator; Kestrel customizes its text, status, borders, and accents.
Edit config.json, then press R.
Kestrel validates the actual file and replaces the active configuration when it is valid. Invalid configuration is reported in a readable error message and does not crash the program.
Recent activity is shown in the dashboard and detailed events are persisted to:
kestrel.log
Examples include startup, configuration reloads, cycle starts/completions, errors, and shutdown.
Kestrel is an OS-level keyboard automation utility. It intentionally does not:
- inject code into Roblox
- read Roblox memory
- modify Roblox processes or files
- hook Roblox internals
- manipulate game network traffic
- bypass anti-cheat systems
- implement exploits
- alter game data
Windows security software or another application may interfere with global keyboard hooks. Kestrel logs the failure and the dashboard remains usable.
Check the exact visible Roblox window title or set:
"target_window": nullto disable filtering.
Press R after correcting the specific field named by the error message.
Kestrel stops automation, releases held keys, stops keyboard listeners and worker threads, flushes the activity log, stops Rich rendering, clears the terminal, and exits cleanly.
Kestrel is a normal Python project. If you later want a Windows executable, a tool such as PyInstaller can be used, for example:
pip install pyinstaller
pyinstaller --onefile --name Kestrel main.pyTest the Python version first before packaging so that terminal input, Rich rendering, and global hotkeys are known to work on the target system.
0 comments
log in to comment.