[v0.12 Beta] Solar Admin System - Lightweight Command Bar


Solar Admin System :sparkles:

Beta Release v0.12

Download Model :hammer_and_wrench:
Get Model on Roblox :inbox_tray:
Discord Server :left_speech_bubble:


Solar Admin is still in development and may/will have many bugs.
It is not recommended you use this in production games while it is in beta.

There are many features missing at the moment which will be implemented at a later date

You should ‘watch’ the thread or follow me to know when the next update has been released!

Currently, Solar is being updating every day or so while I add new features and discover more bugs!

About Solar

Solar is an admin system designed primarily for developers.
It allows developers to easily customize almost all aspects of it.
Developers are encouraged to program their own commands to add to Solar.

Solar comes with an easy to use API which allows developers to expand Solar even more.

Solar does not come with any commands besides the example command, however, you can download some pre-made commands on our Discord Server or at the bottom of this post


Solar has a wide variety of features, below are some of our core features

  • Clean UI
  • Tab Autocomplete/Suggestions for Commands & Arguments
  • Fast Setup
  • Custom Commands
  • Easy to use API

Screenshots & Videos

View Screenshots & Videos


View Documentation

Get Started

Setting up Solar is fairly easy, follow the steps below to get it setup in your game.

Downloading & Initializing Solar

You can download Solar two ways, GitHub & Roblox

Once you have Solar downloaded, insert it into your game and then drag it into ReplicatedStorage

Next you’ll need to initialize Solar to begin using it. To do this, insert a new Script into ServerScriptService and paste the following code into it:

local Solar = game:GetService("ReplicatedStorage"):WaitForChild("Solar")
local API = require(Solar:WaitForChild("API")) --// Require Solar API

--// Initialize Solar & register commands

--// If you do not want to register commands by default then set the 1st argument to false
--// API:Initialize(false)

Solar will not work unless you initialize it

Configuring Solar

Once you have initialized Solar, you’ll need to configure it in the Settings module in order to start using it!

To get started, open the Settings module in the Solar folder

Once you have it open, scroll down to the Settings table in the module and configure the values however you wish

Everything is documented within the module so you should be able to figure out how to do everything

Adding Commands

Adding Commands to solar is pretty easy, first you’ll need to find a command (or command pack) you’d like to add and then insert it into your commands folder (by default it is located under the Configuration folder

Once you’ve dragged your command into the commands folder, it should be usable in game once it has been registered

It is recommended you remove the example command unless it is needed for testing

Configuring Commands

Commands are usually configured by default but if you’d like to change the configuration for a command (such as the permission level or name) you can open the command module and edit the values

Creating Commands

If you’d like to create your own commands rather than using premade commands, you can do so with ease!

Below is a template for a command:

local API = require(game:GetService("ReplicatedStorage"):WaitForChild("Solar"):WaitForChild("API"))

local command = {
	Name = "example", --// The name of your command
	Description = "Just an example command!", --// Short description of what your command does
	Arguments = { --// Command arguments
		[1] = {
			Name = "text", --// The name of the argument
			Required = true, --// Is this argument required?
			Type = "string", --// The argument type
		[2] = {
			Name = "target", --// The name of the argument 
			Required = true, --// Is this argument required?
			Type = "player", --// The argument type
		[3] = { 
			Name = "reason", --// The name of the argument
			Required = false, --// Is this argument required?
			Type = "multistring", --// The argument type
	PermissionLevel = 3, --// The permission level required to run this command
	ParseArguments = true, --// Should the arguments be parsed automatically or should they be sent as strings

function command.execute(player,arguments) --// This function is called when someone executes the command
	print("Hello from this command! The arguments entered were:",arguments)
	return true	 --// Make sure to return something if the command was successfully executed!

--// If command is required on the client, do not return the execute function
if game:GetService("RunService"):IsClient() then
	command["execute"] = nil

return command

You can edit the name of the command by changing the Name value (you must change the name of your command module to the same value)

You can also add a description to help users understand what the command does.


Commands also have arguments which are pretty easy to be configured and Solar will do the heavy lifting for you (parsing the arguments, etc)

Here is a list of valid argument types:

  • player - Player
  • string - Single String
  • multistring - Multiple Strings
  • number - Number
  • boolean - True or False

The player argument will be parsed as a RegisteredPlayer instead of a Player instance. You can access the Player instance via RegisteredPlayer.Player

The Required value for arguments will force the command to fail to execute if the required argument is missing.

The Name value is the name of the argument.


Command Permissions are useful for restricting commands to certain groups of players.

Solar has 4 permission levels,

  • 1 - Player
  • 2 - Moderator
  • 3 - Administrator
  • 4 - Head Administrator

You should set the command permission to the correct permission level in order to prevent abuse of it. (for example, server changing commands should be restricted to administrators)


The command module also contains an execute function, this is the main function of your command and is fired whenever a command is executed.

When fired, two values are sent:

  • player - the player who executed the command
  • arguments - the command arguments

You can program your command in this function and make use of those values.

You must return a value other than nil if the command is executed successfully

Solar API

Solar comes with an API that commands & plugins can make use of.


function API:Initialize(RegisterCommandsByDefault: boolean?,RegisterCurrentPlayers: boolean?) : void

   Should Commands in the Commands folder be registered by default | default: true
   Should current players be registered | default: true
function API:RegisterPlayer(player: Player) : RegisteredPlayer

   Player Instance
function API:UnregisterPlayer(player: Player) : boolean

   Player Instance
function API:GetPlayers() : {RegisteredPlayer}
function API:GetPlayer(player: Player | string) : RegisteredPlayer

   Player Instance or Player Name
function API:AddEventListener(name: string,folder: Folder) : BindableEvent

   Name of the Event Listener
   Folder of the Event Listener
function API:AddRemoteEvent(name: string,folder: Folder) : RemoteEvent

   Name of the Remote Event
   Folder of the Remote Event
function API:RegisterCommands(commands: {ModuleScript}) : Commands

   Table of Command module scripts
function API:ExecuteCommand(player: Player,command: string,arguments: {}?) : boolean | any

   Player Instance
   Name of command
   Dictionary of arguments
function API:GetCommandInstance(command: string) : ModuleScript

   Name of command
function API:GetCommands() : {ModuleScript}



string Username: Player Username
string DisplayName: Player Display Name
number UserId: Player UserId
number AccountAge: Player Account Age
number PermissionLevel: Player Permission Level
number JoinTime: Time player joined
player Player: Player Instance
{[string]: any} PolicyInfo: Player Policy Info
string Region: Player Region
{any} ExecutionLog: Player execution log
{any} GameHistory: Player history

function RegisteredPlayer:LogHistory(history: {any}?) : {any}
   history: Table to add to player history

function RegisteredPlayer:LogExecution(command: string,arguments: {}?,response: any) : {any}
   command: Name of command
   arguments: Command arguments
   response: Execution response

function RegisteredPlayer:SetPermission(permissionLevel: number | nil) : RegisteredPlayer
   permissionLevel: Permission Level or nil for default permission


Here are the current planned features for Solar

  • Custom Plugins
  • Custom Themes
  • Built-in UI Library

Known Bugs

  • Command bar does not autofocus occasionally
  • Autocomplete is quite slow (again)
    – The fix for this will release next update

Commands & Command Packs

Command Packs
  • Moderation Pack
    – Kick
    – Ban
    more coming soon

  • Troll Pack (made by @S1mpl1eDude)
    – fling
    – trip
    – freeze
    – smite

  • Utility Pack (made by @S1mpl1eDude)
    – clone
    – increasestat


Currently, there are no individual commands

More commands & packs will be releasing soon!

Thank you!

Thank you for reading this post.

If you find any bugs with Solar, please let me know in the replies :bug:

If you have any feedback regarding Solar, you can also tell me it in the replies :slight_smile:


Commands & Command Pack Suggestions

If you have a suggestion for a command or a pack of command, please reply to this with it and I may program it! (and give you credit for the suggestion)

What about a “Troll” pack. Mainly used to troll the players. Stuff like:

Smite (strikes player with lightning)

And other stuff along those lines.

You can also add a utility pack. Stuff like:


Replicate (clones objects such as enemies, items and other stuff from ReplicatedStorage and puts it in the workspace


And other stuff along those lines.

Just a few ideas :grin:

1 Like

Ooo, both are good ideas!

The troll pack sounds interesting.

I’ll make these soon and will let you know once they’re finished!

1 Like

you should also make a configuration that disables the packs, maybe some games are serious and dont want those commands in theyre game

Packs are not included in the main model, they will be uploaded as separate models which developers can then add into Solar :slight_smile:

Does/will the system allow for customization of permission levels?

Shouldn’t this {[string]:any}?

By permission levels do you mean additional permission levels?
If so, I believe you should be able to set a permission level above 4 if you wish to do so as permission levels are just numbers not strings (the moderator, administrator and head administrator were examples of what their hierarchy would be)

Yep, I’ll change that now

1 Like

Also I just thought if this. Maybe a good command to add to your moderation pack would be a pardon command to unban people?

Yeah I’ll add an unban command

1 Like

Cool right? Its fun seeing people use their creativity for things like this.

1 Like

Solar v0.12

Solar is now at version 0.12!

Some of the changes made were:

  • Improved autocomplete
  • Some minor bug fixes

also removed some code I put in for debugging which I forgot about :skull:

Download on GitHub :inbox_tray:
Get on Roblox :roblox_light:


Made a Trolling and Utility Pack for this if anybody needs it:


1 Like

Really cool commands in these!

1 Like

A few of the features you suggested were made into a pack by @S1mp1eDude (I also made a smite command for you)

If you’d like, you can get them here:

Credit goes to @S1mp1eDude for the commands


Sweet thank you!

1 Like

Hey everyone!

Solar will be updating to version 1.0.0 in the next day or so, there are quite a few changes in the way that commands are made and you’ll need to update any current commands to be compatible once it has been released.

The following will be changed:

  • Commands
  • UI
  • Themes (will be released)
  • Plugins (will be released)

I will also be working on a Roblox Plugin for Solar to assist you with installing/setting it up and to assist you with command development :slight_smile:

This is just a notice, the update is not released yet!

You have gotten many things wrong regarding this, so let me address everything. Also I do not like how you refer to me as “bozo”. It’s pretty disrespectful especially considering I have not done anything to you.

The reason why the system has no output is because it is still in beta, it is not ready for production and once it is, it will show the output of commands.

The troll pack was not developed by me and it was a community contribution, developers can add this pack if they wish and it is not pre-shipped.

I can in fact do this, the plugins purpose is so people can set it up by clicking a few buttons and so they can install commands via the plugin.

This isn’t to hype people up, it’s just giving them notice to what will be added/changed

This is the same thing that Cmdr does.

It improves a users experience when they do not need to look at really bad UI.

Am I not allowed to have a feature that everything else uses?

I don’t see what your point is?

Again, am I not allowed to have a feature that everything else uses?

I fail to understand how you think that this system is for youtubers who do troll videos? Is it because one person made a set of commands for trolling which isn’t even shipped with the admin?


General commands for development can’t be created that easily, as everyone uses different frameworks and such and you simply can’t cover them all. Troll pack was not created by them [Star] (if you actually read the whole thread you would know this) and just some edits were made as per a user requested.

These other admin systems have been out significantly longer than this, please take note that everything takes time to mature.

I see no problem with this as it would be able to be integrated with frameworks fairly simply.

The quickest option is not always the best option - your example Adonis is filled with multiple commands that most people would never actually use and has a lot of extra functions that just add bloat which simply isn’t always needed.


Do you just complain on every community resource? This is the millionth time I’ve seen you rain on someone elses’ parade… get a life.