Marvin is a Linux terminal command assistant developed in C++. It acts as a command wrapper capable of executing built-in functions, external modules (bundles), and system binaries, while providing a visual interface through ASCII art.
When a command is submitted, Marvin applies the following priority hierarchy:
- Builtins: Native functions compiled directly into the application core (hash table lookup).
- Bundles: Binaries located in the structured directory
bundles/[username].[repo]/bin/. - User Bin: Binaries manually added to
usr/bin/. - System: Automatic search within the user's PATH.
To download Marvin, please clone the repository and navigate into it (the name .marvin is optional):
git clone https://github.com/SeigneurLefou/Marvin-the-Paranoid-Assistant .marvin
cd .marvinThen, run the installation script:
./install.sh| Command | Description |
|---|---|
| --help, -h | Displays help and command syntax. |
| update | Updates the Marvin directory and rebuilds the project. |
| whereis | Identifies the location of a binary and detects naming conflicts. |
| search | Recursive search for files or directories with depth management. |
Bundles are remote extensions developed by users that can be managed via dedicated commands:
| Command | Description |
|---|---|
| install | Clones and installs a bundle from a remote repository. |
| list | Lists available bundles (use the --installed flag for local modules). |
| remove | Completely uninstalls a bundle. |
| load | Updates and recompiles an existing module. |
- Installation script with automatic PATH export.
- Dynamic MARV variable in the Makefile for uninstallation.
- Complete codebase migration to C++17/20 standard.
- Implementation of core built-in commands.
- Implementation of the Search command.
- Todo-list: Task management with prioritization and reordering (add, move, remove, clear, list, check).
- Chat: Client-server communication via POSIX sockets (server-chat, client-chat).
- Creation of a centralized repository for add-ons and themes.
- Technical documentation website with a marketplace for bundles.
To suggest a new feature or report a bug, please open an Issue on the official GitHub repository. Contributions via Pull Requests are welcome following technical review. Precise the usage of any LLM in your pull request and don't vibe code.