This project is a dual-pane Linux terminal designed to enhance the user experience by integrating an AI-powered agent in one pane and a traditional bash shell in the other. The agent helps users with different levels of experience, by answering queries, running Linux commands, and managing bookmarks for frequently used commands, making it easier to navigate and troubleshoot Linux systems.
This project was part of a Research Internship at Jetbrains (Neapolis University Pafos Bachelor Program). It was collaboratively developed by:
under mentorhsip of Kirill Krinkin.
The AI Powered Linux Shell splits terminal into two sections:
- Bash (bottom section): A regular bash shell where you can run your standard Linux commands, as well as interactive applications, such as
nanoandtop. - Agent (top section): An AI-powered agent that helps with Linux queries, troubleshooting, and command management. The agent uses a large language model (LLM) to answer Linux-related questions, keeping context within a session, with the ability to bookmark frequently used queries.
Important information: In order to use the inspector agent, a SSH server must be setup on the user's machine, and a provided public key must be installed. Inspector agent can be found here.
[WIP - need to update address/deb to the correct URL]
Add repository to apt:
curl -s --compressed "_address_/deb/KEY.gpg" | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/ishell.gpg >/dev/null
sudo curl -s --compressed -o /etc/apt/sources.list.d/ishell.list "_address_/deb/ishell.list"
sudo apt updateThen, install:
sudo apt install ishellRun with command ishell.
Clone the source code:
git clone git@github.com:smart-linux-shell/ishell.gitCompile and run ishell:
cd ishell
./run.shISHELL_AGENCY_URL- base url for agency server (optional - by default will use our own agency)ISHELL_LOCAL_DIR- directory for local files (optional - by default creates and uses~/.ishell)SSH_IP- IP address for SSH server running on the user's system (required - for inspector agent)SSH_PORT- port for SSH server runinng on the user's system (required - for inspector agent, by default22)ISHELL_TOKEN- token to log into agency (required - authenticate with github on agency webpage at /login/github)
Once ishell is up and going, you can use the bottom pane as a regular bash, and top pane as an agent.
CTRL-Dto exitCTRL-B; TABto switch the focused windowCTRL-B; Zto zoom in/outCTRL-B; [to enter/leave manual scrolling mode- if focused on a window with manual scrolling mode enabled, scroll up and down can be down using arrow keys
TABin agent window, to switch to the System Mode
While focused on the agent window, special commands can be executed in System Mode. Those commands will not be sent to the LLM as queries, but will rather be processed as user commands. They include:
clear- clears contextbookmark <index> <alias>- Bookmark the query at the given history index with the specified alias.bookmark <alias>- Bookmark the last executed query with the specified alias.bookmark -lorbookmark list- List all saved bookmarks.bookmark -r <alias>orbookmark --remove <alias>- Remove the bookmark with the specified alias.bookmark --help- Show help message.switch <agent_name>- Switch to another agent.<alias>- Executes query with specified alias.
Take a look at the this comprehensive demo that Iulian recorded:
ishell_presentation.mp4
Source code is well covered with unit tests that can be found here.
To test, run:
cd ishell
./run.sh -t # or --test
As the deb package is not deployed yet, the smoke test is not automated. To ensure that the ishell works correctly, please:
- Follow the installation guide and run the ishell.
- Verify that the shell opens in split-screen mode (assistant at the top, bash at the bottom).
- Run a simple bash command (e.g.,
ls) to check if bash is functional. - Ask a Linux-related query in the assistant section to ensure it responds correctly.
- Use
Ctrl + TABto switch between the assistant and bash, confirming smooth switching. - Run interactive applications (e.g.,
top,nano) in bash and verify they work properly. - Exit the shell using
exitand ensure both the assistant and bash terminate without issues.