iSystemAdministrator (iSA) is an MVC-pattern selection menu tool designed for command-based systems.
iSystemAdministrator (iSA) simplifies command-line operations, making system administration quick, straightforward, and highly organized.
If you manage too many shell scripts, struggle to locate them for execution, or constantly forget complex command syntaxes, iSA resolves these challenges by streamlining your workflow.
iSA provides a selection menu structured around the MVC pattern to organize, aggregate, and execute commands seamlessly.
- It stores your custom commands or routine jobs, allowing you to trigger them simply by selecting a number from a menu.
- Once configured, users can run complex tasks without needing deep command-line or system knowledge.
The latest source code is available on GitHub. The recommended installation directory is ~/bus.d.
- Bash version 3.2.57 or greater
- Note: This is the minimum version required to link multiple external files using the source command.
- Note: This is the minimum version required to link multiple external files using the source command.
- Bash version 4.2.53 or greater
- Note: This is the minimum version required to use hyphens and dots in function and variable names for memory allocation.
- Note: This is the minimum version required to use hyphens and dots in function and variable names for memory allocation.
- awk
- dialog
- grep
- head
- sed
- sort
- sleep
- tail
- xargs
Run the following command in your terminal. You will need to restart your terminal after the installation completes.
curl -s https://raw.githubusercontent.com/loweboard/iSystemAdministrator/master/app.iSA/local.holder.Configure.About.view.install.sh | bash
git clone https://github.com/loweboard/iSystemAdministrator.git ~/bus.d
echo "source ~/bus.d/app.iSA/local.holder.agw.sh" >> ~/.bash_profile
source ~/.bash_profile
This section covers the core capabilities of iSA and its primary operation methods.
- MVC Architecture: Structured entirely around the Model-View-Controller pattern.
- Versatile UIs: Supports Command-line (CLI), Textual (TUI), and Graphical (GUI) menus.
- Infinite Submenus: Easily create deeply nested submenus through specific filename conventions.
- Zero Coding Porting: Integrate any existing shell script into iSA instantly—just rename the file to match the iSA format.
- Broad Language Support: Compatible with any shell environment or scripting language, including Zsh, Bash, Python, PHP, etc.
- Hierarchical Scoping: Each submenu level has its own configuration model (*.model.sh) to define variables that cascade down to that level and all subsequent submenus.
| Name | Type | Description |
|---|---|---|
isa-set--debug-on |
boolean | turn on debug mode. |
isa-set--debug-off |
boolean | turn off debug mode. |
isa-set--verbose-on |
boolean | show more information of command execution. |
isa-set--verbose-off |
boolean | show less information of command execution. |
isa-cd |
dialog | change working directory to current iSA path. |
isa-select |
dialog | select different holder of (*.agw.sh). |
isa ([tab]) |
dialog | autocomplete to show up menu and submenu. |
| Name | Description |
|---|---|
local.holder.agw.sh |
system-wide settings saved by iSA. |
local.holder.Configure.About.view.bashrc.sh |
per-user settings saved by the administrator. |
local.sitter.agw.sh |
system-wide settings saved by iSA. |
local.sitter.Configure.About.view.bashrc.sh |
per-user settings saved by the administrator. |
*.Configure.About.view.bashrc.sh |
per-user settings saved by the user. |
| ** Interactive Shell Terminal ** | per-session settings effective once . |
| Name | Description |
|---|---|
1) (self->bel).controller |
call sitter tools menu (local.sitter.agw.sh). |
2) (self->dir).controller |
Reverts the working directory to the previous. |
| Name | Description |
|---|---|
*) (self->edit).view.* |
Opens Vim to edit the corresponding view file. |
iSA can be executed in three different ways depending on your interface preferences.
$ isa
$ isa-set--x-on
$ isa
$ isa local.holder.AI.view.patrol
Alternatively, you can leverage tab-completion to find your view:
$ isa local.([tab])
$ isa local.holder.([tab])
$ isa local.holder.AI.([tab])
$ isa local.holder.AI.view.([tab])
$ isa local.holder.AI.view.patrol
Note: The final parameter targeted must always be a view file.

4.1 How to add self-defined shell script?
4.2 How to change submenu name?
4.3 How to create level 2 submenu?
question:
I have a standalone script called chatbot.sh. How do I organize it under the "AI" submenu using iSA?
answer:
First, check the contents of the AI submenu folder at ~/bus.d/app.iSA. You will see files like this:
local.holder.AI.controller.sh
local.holder.AI.model.sh
local.holder.AI.view.patrol.sh
To integrate your script, simply rename it to follow the iSA View naming convention:
$ mv chatbot.sh local.holder.AI.view.chatbot.sh
- Result
local.holder.AI.controller.sh
local.holder.AI.model.sh
local.holder.AI.view.chatbot.sh
local.holder.AI.view.patrol.sh
The script will appear in the iSA menu and become executable immediately. You can port scripts into any submenu tier without writing any extra code.
question:
How do I rename the "AI" submenu to "BI"?
anwser:
Look at the files inside your ~/bus.d/app.iSA folder:
local.holder.AI.controller.sh
local.holder.AI.model.sh
local.holder.AI.view.patrol.sh
Rename the prefix domain from local.holder.AI to local.holder.BI:
$ mv local.holder.AI.controller.sh local.holder.BI.controller.sh
$ mv local.holder.AI.model.sh local.holder.BI.model.sh
$ mv local.holder.AI.view.patrol.sh local.holder.BI.view.patrol.sh
- Result
local.holder.BI.controller.sh
local.holder.BI.model.sh
local.holder.BI.view.patrol.sh
The changes will reflect in your iSA menu instantly.
question:
How do I nest chatbot.sh inside a new "Bot" submenu under the existing "AI" submenu?
anwser:
Check your current "AI" folder structures:
local.holder.AI.controller.sh
local.holder.AI.model.sh
local.holder.AI.view.patrol.sh
- Copy the controller and model from the parent "AI" directory to initialize the "Bot" namespace:
$ cp local.holder.AI.controller.sh local.holder.AI.Bot.controller.sh
$ cp local.holder.AI.model.sh local.holder.AI.Bot.model.sh
- Move and rename your script to match the new deep path structure:
$ mv chatbot.sh local.holder.AI.Bot.view.chatbot.sh
- Result
local.holder.AI.controller.sh
local.holder.AI.model.sh
local.holder.AI.Bot.controller.sh
local.holder.AI.Bot.model.sh
local.holder.AI.Bot.view.chatbot.sh
local.holder.AI.view.patrol.sh
The updated menu hierarchy updates dynamically. This process can be repeated for level 3, 4, 5, and beyond, supporting infinite submenu nesting.
5.1 Author
5.2 License
5.3 Web-based implementation
Gnu.org
LOWE/SAAU-LOON MR
- Twitter: @loweboard
- Github: @loweboard
Copyright © 2012-2015, 2026 loweboard.
This project is GNU General Public License v3.0 licensed.



