Noctro
Documentation

Everything Noctro exposes.

One accent-driven theme, a sidebar-first window, and a control set that covers what a script menu actually needs. This page is the complete API, nothing here isn't in the library.

Overview

Noctro is a dark-theme UI library for Roblox executors, written in Luau with no external dependencies. It ships sidebar navigation, sections, a full control set, a config system, a key system, a watermark, a keybind list, and notifications, all driven by a single accent color.

LuauThemableConfig systemKey systemSingle file

Installation

Load the library directly from noctro.cc, nothing to download or host yourself.

loadstring
local Noctro = loadstring(game:HttpGet("https://noctro.cc/noctro.lua"))()

Cache-bust

Executors cache HttpGet results. Append a changing query string if you need a guaranteed-fresh pull while testing.

loadstring, cache-bust
local Source = game:HttpGet("https://noctro.cc/noctro.lua?v=" .. tostring(tick()))
local Noctro = loadstring(Source)()

Quick start

A minimal menu with one page, one section, and a toggle bound to a keybind.

quickstart.lua
local Noctro = loadstring(game:HttpGet("https://noctro.cc/noctro.lua"))()

Noctro:LoadingScreen({
	Title = "Noctro";
	Subtitle = "Initializing...";
	Duration = 1.25;
})

Noctro.SetWatermark("Noctro", true)
Noctro.SetKeybindList(true)

local Window = Noctro:Window({
	Title = "Noctro";
	Footer = ".gg/yourinvite";
	Logo = "hash"; -- lucide name or rbxassetid://...
})

local Combat = Window:Page({ Icon = "swords" })
local Aimbot = Combat:SubPage({ Name = "Aimbot" })
local Main = Aimbot:Section({ Name = "Main"; Side = "Left"; Icon = "crosshair" })

local Enable = Main:Label({ Text = "Enable aimbot" })
Enable:Toggle({ Flag = "AimbotEnabled"; State = false; Callback = function(v) end })
Enable:Keybind({ Flag = "AimbotKey"; Key = Enum.KeyCode.RightShift; Type = "Hold" })

Main:Slider({
	Name = "Field of view";
	Flag = "AimbotFOV";
	Min = 10; Max = 120; Default = 90;
	Suffix = "°";
})

Noctro:BuildConfigPage(Window)
Noctro.Notify({ Title = "Noctro"; Text = "Loaded"; Type = "Success"; Duration = 3 })

Library globals

MemberDescription
Noctro:Window(opts)Create the main window. Returns Window.
Noctro:LoadingScreen(opts)Centered loading overlay (Title, Subtitle, Duration).
Noctro:BuildConfigPage(Window)Adds a full settings-style config + theme page.
Noctro.Notify(opts)Toast notification.
Noctro.SetWatermark(text, enabled?)Top watermark.
Noctro.SetKeybindList(enabled?)Floating, draggable keybind list.
Noctro.SetConfigFolder(path)Custom config directory (default "Noctro").
Noctro.SetScale(number)UI scale, e.g. 1, 0.9, 1.1.
Noctro.MenuKeyMenu toggle key (default Enum.KeyCode.LeftAlt).
Noctro.Theme / Noctro.DefaultThemeLive theme tables.
Noctro.ApplyTheme()Re-paint all themed instances.
Noctro.SaveConfig / LoadConfig / DeleteConfig / ListConfigsConfig file operations.
Noctro.SetAutoload(name?) / GetAutoload()Autoload config name.
Noctro.FlagsRuntime flag store.

Window

local Window = Noctro:Window({
	Title = "My Script";
	Footer = "discord.gg/invite";
	Logo = "hash";           -- top-left brand icon
	Icon = "hash";           -- alias for Logo
})
MethodDescription
Window:Page({ Icon })Sidebar tab. Icon: lucide name or rbxassetid://…
Window.SetLogo(icon)Change logo at runtime.
Window.TabEditModeWhen true, tabs can be reordered from the sidebar.

Sidebar behavior

  • Soft radial selection bloom on the active tab, accent-colored.
  • A small reorder toggle sits at the bottom of the sidebar.
  • With reorder on, drag tabs, a ghost icon follows the cursor and an outline placeholder marks the drop slot.
  • Tab order is saved in layout and configs.

Page → SubPage → Section

local Page = Window:Page({ Icon = "eye" })
local Sub  = Page:SubPage({ Name = "ESP" })
local Sec  = Sub:Section({
	Name = "Players";
	Side = "Left";   -- "Left" | "Right"
	Icon = "users";
})

Sections support drag rearrange with a ghost preview between columns and slots. Positions persist via layout.

Elements

Every element lives on a Section.

Label, row host for Toggle / Keybind / Colorpicker

local Row = Section:Label({ Text = "Enable feature" })
Row:Toggle({ Flag = "MyToggle"; State = false; Callback = function(v) end })
Row:Keybind({ Flag = "MyKey"; Key = Enum.KeyCode.E; Type = "Toggle" }) -- "Toggle" | "Hold"
Row:Colorpicker({ Flag = "MyColor"; Color = Color3.fromRGB(138, 156, 229) })

Slider

Section:Slider({
	Name = "Smoothness";
	Flag = "Smooth";
	Min = 0; Max = 100; Default = 35;
	Suffix = "%";
	Callback = function(v) end;
})

Dropdown

Section:Dropdown({
	Name = "Target part";
	Flag = "Part";
	Options = { "Head"; "Torso"; "HumanoidRootPart" };
	Default = "Head";
	Multi = false;          -- true = multi-select
	Search = false;         -- optional search box
	Callback = function(v) end;
})

Input

Section:Input({
	Name = "Config name";
	Flag = "CfgName";
	Placeholder = "Enter name...";
	Default = "";
	Callback = function(text) end;
})

Button

Section:Button({
	Name = "Unload";
	Callback = function() end;
})

Buttons don't need to span the full section width, several can sit in a row depending on layout.

Paragraph

Section:Paragraph({
	Title = "Build";
	Body = "Noctro UI · stable";
})

Used for fixed, non-editable text, about, credits, a Discord link.

Theme

Default palette, blue accent:

KeyRole
AccentPrimary highlight, tabs, toggles, sliders, selection.
AccentDarkGradient partner, derived from Accent if needed.
BackgroundWindow body.
Surface / SurfaceAltPanels, header, sections.
Border / SectionBorderStrokes.
Text / TextDimTypography.

Changing theme colors, via BuildConfigPage colorpickers or script, calls ApplyTheme() and updates window chrome, the sidebar, sections, the selected tab bloom and icon, toggle / slider / sub-tab gradients, button hover gradients, and the watermark and keybind list accents. Theme is stored inside configs.

Config system

Noctro.SetConfigFolder("MyScript/Configs")  -- optional

Noctro.SaveConfig("rage")
Noctro.LoadConfig("rage")
Noctro.DeleteConfig("rage")
Noctro.ListConfigs()        -- { "rage", "legit", ... }
Noctro.SetAutoload("rage")

What is saved

  • All registered flags, toggles, sliders, dropdowns, keybinds, colors.
  • Theme colors.
  • Menu key.
  • Layout, tab order, section order/side, keybind list and watermark positions.

BuildConfigPage(Window) adds

  • A config list, click to select, selected name highlights.
  • Save / Load / Overwrite / Delete / Refresh / Set autoload, acting on the selected config.
  • A name field synced to selection.
  • Theme colorpickers with a reset to default.

Key system (optional)

Gate the menu behind a key you validate yourself.

Noctro:KeySystem({
	-- integrate with your backend; this is a demo validator
	Validate = function(key)
		-- return success, expiresAt (unix) or nil
		if key == "noctro-demo" then
			return true, os.time() + 7 * 24 * 3600
		end
		return false
	end;
	Remember = true;
	ShowExpiry = true;       -- menu + optional watermark
	WatermarkExpiry = true;
})
  • Same visual language as the main menu, gradients, surfaces, corners.
  • Key field only, no username or password by default.
  • Remember-me checkbox, draggable login panel.
  • On success: a loading state on the menu, then the full UI.
  • Sign out clears the stored key.
Demo keys are for examples only. Validate server-side in production, the client UI is a gate, not the security boundary.

Watermark & keybind list

Noctro.SetWatermark("Noctro", true)
Noctro.SetKeybindList(true)
  • Watermark: top-center, theme-matched, no user-id spam.
  • Keybind list: lists active binds with mode, draggable, clamped on-screen, position saved.

Notifications

Noctro.Notify({
	Title = "Aimbot";
	Text = "Enabled";
	Type = "Success";  -- Success | Error | Warning | Info
	Duration = 3;
})
  • Compact height, animated in and out.
  • Position configurable from the menu, e.g. top right.
  • Optional auto-notify on toggle changes via Noctro.NotifyToggles.

Header search filters all controls by name across tabs. Matching a control on another tab switches to that tab automatically. Dropdowns can enable their own search with Search = true , useful for player lists.

BehaviorDetail
Open / closeNoctro.MenuKey (default Left Alt), rebindable.
Drag menuStrong, smooth drag, cannot leave the screen.
Search barDragging the search field does not move the window.
UI scaleNoctro.SetScale(1)
UnloadProvide a Button that destroys the GUI / clears hooks.

File / config layout

Noctro/                 -- or custom SetConfigFolder path
  myconfig.json
  layout.json          -- optional layout snapshot
  Autoload.txt         -- if using autoload helpers

Read the full, unmodified library file any time on the source page.