ShellyForever — a 64-bit OS written entirely in x86-64 NASM assembly (with AI assistance)
-
Why I built this
I hate Unix commands.
ls,cd,rm,mv,cp— two- and three-letter cryptic abbreviations that made sense to someone in 1971 and have just been carried forward ever since because "that's how it's always been." I wanted a shell where the commands actually describe what they do, without needing to memorize a decades-old convention. So instead of complaining about it, I designed my own command set and built an OS around it from the ground up.ShellyForever (currently v0.1.1) is a 64-bit OS written completely from scratch in x86-64 NASM assembly. No C, no existing kernel, no BIOS libraries beyond boot-time disk/keyboard calls. It boots and runs on real hardware, not just in an emulator. The name's a commitment, not just a name — I plan to keep updating it forever.
To be upfront about how this was built: the assembly code itself is almost entirely AI-written. My part was designing the shell and commands — what each one should be called, how it should behave, what made sense to me as the person who'd actually be typing them — then having the AI implement that in asm and iterating with it on bugs and logic.
How it's built
- Bootloader (
boot.asm) — 512-byte boot sector. Starts in 16-bit real mode, loads the kernel off disk, switches to 32-bit protected mode, builds its own minimal page tables, switches to 64-bit long mode, jumps into the kernel. - Kernel (
kernel.asm) — everything else:- A VGA text-mode driver (writes directly to
0xB8000) with scrolling - A polled PS/2 keyboard driver (decodes scancode set 1, handles shift, backspace, enter)
rush, the custom shell — prompt, line editor, a tokenizer that understands quoted strings, and a command dispatcher- An in-memory filesystem tree rooted at
/home, with recursive copy/move/delete - A simple
name = valueint64 variable table - A built-in line editor for file content
- A VGA text-mode driver (writes directly to
The commands (no more
ls/rm/cd)Command Example What it does cfcf docs,cf ..change folder mkfmkf docsmake a folder mkflmkfl a.txt "text"make a file with content ( -force/-silent/-info/-test)deldel a.txtdelete a file (requires auth)rnamername old.txt new.txtrename a file or folder owriteowrite a.txt "new text"overwrite a file's content in place cpycpy docs docs_backupcopy a file/folder (recursive) movmov docs archivemove/rename a file/folder (recursive) showshow "hi",show aprint a message or a variable listlistlist current folder contents viewview a.txtprint a file's content findfind notes.txtsearch every drive for a name, print its path lookforlookfor "todo" notes.txtgrep a file's content, with optional line range editedit a.txtbuilt-in text editor <n> = <value>a = 5set a variable rmvrmv aremove a variable varsvarslist all variables calccalc 1 + 2 * 3evaluate a math expression rrrr script.rshrun a rush script file prsprs,prs kill 1list/kill running scripts authauth sdownelevate for one dangerous command currentcurrentprint current path wipewipeclear the screen dscandscanscan drives for existing volumes fmtfmt dataformat a drive with a volume label mountmount datamount a formatted drive under /data/labellabel old newrename a mounted drive's label aliali gs listcreate a command alias alisalislist aliases colorcolor cyanchange output text color syncsyncsave the filesystem to disk rbootrbootsave and restart (requires auth)sdownsdownsave and shut down (requires auth)Some quality-of-life extras: command history and scrollback (arrow keys),
;to chain commands on one line,~to pipe one command's output into another,$for comments, and.rshscript files for automation.Known limitations
No interrupts yet (keyboard/disk are polled), no real memory allocator (flat identity-mapped first 2MB), no ACPI (shutdown uses emulator magic ports on QEMU/Bochs/VirtualBox, halts cleanly on real hardware/anything else), and fixed-size file/folder tables for now.
Code
GitHub - TheServer-lab/ShellyForever: A 64-bit shell-based OS written entirely in x86-64 NASM assembly, from scratch — no C, no BIOS libraries beyond boot-time disk/keyboard calls, no existing kernel.
A 64-bit shell-based OS written entirely in x86-64 NASM assembly, from scratch — no C, no BIOS libraries beyond boot-time disk/keyboard calls, no existing kernel. - TheServer-lab/ShellyForever
GitHub (github.com)
Happy to go deeper on the boot process, the on-disk filesystem format, or the AI-assisted workflow if people are curious. Feedback welcome, especially from anyone who's done bare-metal x86-64 work.

- Bootloader (
-
Why I built this
I hate Unix commands.
ls,cd,rm,mv,cp— two- and three-letter cryptic abbreviations that made sense to someone in 1971 and have just been carried forward ever since because "that's how it's always been." I wanted a shell where the commands actually describe what they do, without needing to memorize a decades-old convention. So instead of complaining about it, I designed my own command set and built an OS around it from the ground up.ShellyForever (currently v0.1.1) is a 64-bit OS written completely from scratch in x86-64 NASM assembly. No C, no existing kernel, no BIOS libraries beyond boot-time disk/keyboard calls. It boots and runs on real hardware, not just in an emulator. The name's a commitment, not just a name — I plan to keep updating it forever.
To be upfront about how this was built: the assembly code itself is almost entirely AI-written. My part was designing the shell and commands — what each one should be called, how it should behave, what made sense to me as the person who'd actually be typing them — then having the AI implement that in asm and iterating with it on bugs and logic.
How it's built
- Bootloader (
boot.asm) — 512-byte boot sector. Starts in 16-bit real mode, loads the kernel off disk, switches to 32-bit protected mode, builds its own minimal page tables, switches to 64-bit long mode, jumps into the kernel. - Kernel (
kernel.asm) — everything else:- A VGA text-mode driver (writes directly to
0xB8000) with scrolling - A polled PS/2 keyboard driver (decodes scancode set 1, handles shift, backspace, enter)
rush, the custom shell — prompt, line editor, a tokenizer that understands quoted strings, and a command dispatcher- An in-memory filesystem tree rooted at
/home, with recursive copy/move/delete - A simple
name = valueint64 variable table - A built-in line editor for file content
- A VGA text-mode driver (writes directly to
The commands (no more
ls/rm/cd)Command Example What it does cfcf docs,cf ..change folder mkfmkf docsmake a folder mkflmkfl a.txt "text"make a file with content ( -force/-silent/-info/-test)deldel a.txtdelete a file (requires auth)rnamername old.txt new.txtrename a file or folder owriteowrite a.txt "new text"overwrite a file's content in place cpycpy docs docs_backupcopy a file/folder (recursive) movmov docs archivemove/rename a file/folder (recursive) showshow "hi",show aprint a message or a variable listlistlist current folder contents viewview a.txtprint a file's content findfind notes.txtsearch every drive for a name, print its path lookforlookfor "todo" notes.txtgrep a file's content, with optional line range editedit a.txtbuilt-in text editor <n> = <value>a = 5set a variable rmvrmv aremove a variable varsvarslist all variables calccalc 1 + 2 * 3evaluate a math expression rrrr script.rshrun a rush script file prsprs,prs kill 1list/kill running scripts authauth sdownelevate for one dangerous command currentcurrentprint current path wipewipeclear the screen dscandscanscan drives for existing volumes fmtfmt dataformat a drive with a volume label mountmount datamount a formatted drive under /data/labellabel old newrename a mounted drive's label aliali gs listcreate a command alias alisalislist aliases colorcolor cyanchange output text color syncsyncsave the filesystem to disk rbootrbootsave and restart (requires auth)sdownsdownsave and shut down (requires auth)Some quality-of-life extras: command history and scrollback (arrow keys),
;to chain commands on one line,~to pipe one command's output into another,$for comments, and.rshscript files for automation.Known limitations
No interrupts yet (keyboard/disk are polled), no real memory allocator (flat identity-mapped first 2MB), no ACPI (shutdown uses emulator magic ports on QEMU/Bochs/VirtualBox, halts cleanly on real hardware/anything else), and fixed-size file/folder tables for now.
Code
GitHub - TheServer-lab/ShellyForever: A 64-bit shell-based OS written entirely in x86-64 NASM assembly, from scratch — no C, no BIOS libraries beyond boot-time disk/keyboard calls, no existing kernel.
A 64-bit shell-based OS written entirely in x86-64 NASM assembly, from scratch — no C, no BIOS libraries beyond boot-time disk/keyboard calls, no existing kernel. - TheServer-lab/ShellyForever
GitHub (github.com)
Happy to go deeper on the boot process, the on-disk filesystem format, or the AI-assisted workflow if people are curious. Feedback welcome, especially from anyone who's done bare-metal x86-64 work.

what did you do to trigger the downvotes? lol
- Bootloader (
-
what did you do to trigger the downvotes? lol
Mentioned the word "AI"
-
what did you do to trigger the downvotes? lol
Their contribution to this project appears to be just making up command names and describing common operations. That's kind of worthless.
On the functionality front rather than the technical accomplishment front, why would anyone want to use a vibe-coded OS that breaks long-standing usage patterns and has zero oversight over the actual code? If you just want to change the name of commands, you can use "alias", or in this scheme "ali" because that apparently "describes what they do" better than the full word.
-
Why I built this
I hate Unix commands.
ls,cd,rm,mv,cp— two- and three-letter cryptic abbreviations that made sense to someone in 1971 and have just been carried forward ever since because "that's how it's always been." I wanted a shell where the commands actually describe what they do, without needing to memorize a decades-old convention. So instead of complaining about it, I designed my own command set and built an OS around it from the ground up.ShellyForever (currently v0.1.1) is a 64-bit OS written completely from scratch in x86-64 NASM assembly. No C, no existing kernel, no BIOS libraries beyond boot-time disk/keyboard calls. It boots and runs on real hardware, not just in an emulator. The name's a commitment, not just a name — I plan to keep updating it forever.
To be upfront about how this was built: the assembly code itself is almost entirely AI-written. My part was designing the shell and commands — what each one should be called, how it should behave, what made sense to me as the person who'd actually be typing them — then having the AI implement that in asm and iterating with it on bugs and logic.
How it's built
- Bootloader (
boot.asm) — 512-byte boot sector. Starts in 16-bit real mode, loads the kernel off disk, switches to 32-bit protected mode, builds its own minimal page tables, switches to 64-bit long mode, jumps into the kernel. - Kernel (
kernel.asm) — everything else:- A VGA text-mode driver (writes directly to
0xB8000) with scrolling - A polled PS/2 keyboard driver (decodes scancode set 1, handles shift, backspace, enter)
rush, the custom shell — prompt, line editor, a tokenizer that understands quoted strings, and a command dispatcher- An in-memory filesystem tree rooted at
/home, with recursive copy/move/delete - A simple
name = valueint64 variable table - A built-in line editor for file content
- A VGA text-mode driver (writes directly to
The commands (no more
ls/rm/cd)Command Example What it does cfcf docs,cf ..change folder mkfmkf docsmake a folder mkflmkfl a.txt "text"make a file with content ( -force/-silent/-info/-test)deldel a.txtdelete a file (requires auth)rnamername old.txt new.txtrename a file or folder owriteowrite a.txt "new text"overwrite a file's content in place cpycpy docs docs_backupcopy a file/folder (recursive) movmov docs archivemove/rename a file/folder (recursive) showshow "hi",show aprint a message or a variable listlistlist current folder contents viewview a.txtprint a file's content findfind notes.txtsearch every drive for a name, print its path lookforlookfor "todo" notes.txtgrep a file's content, with optional line range editedit a.txtbuilt-in text editor <n> = <value>a = 5set a variable rmvrmv aremove a variable varsvarslist all variables calccalc 1 + 2 * 3evaluate a math expression rrrr script.rshrun a rush script file prsprs,prs kill 1list/kill running scripts authauth sdownelevate for one dangerous command currentcurrentprint current path wipewipeclear the screen dscandscanscan drives for existing volumes fmtfmt dataformat a drive with a volume label mountmount datamount a formatted drive under /data/labellabel old newrename a mounted drive's label aliali gs listcreate a command alias alisalislist aliases colorcolor cyanchange output text color syncsyncsave the filesystem to disk rbootrbootsave and restart (requires auth)sdownsdownsave and shut down (requires auth)Some quality-of-life extras: command history and scrollback (arrow keys),
;to chain commands on one line,~to pipe one command's output into another,$for comments, and.rshscript files for automation.Known limitations
No interrupts yet (keyboard/disk are polled), no real memory allocator (flat identity-mapped first 2MB), no ACPI (shutdown uses emulator magic ports on QEMU/Bochs/VirtualBox, halts cleanly on real hardware/anything else), and fixed-size file/folder tables for now.
Code
GitHub - TheServer-lab/ShellyForever: A 64-bit shell-based OS written entirely in x86-64 NASM assembly, from scratch — no C, no BIOS libraries beyond boot-time disk/keyboard calls, no existing kernel.
A 64-bit shell-based OS written entirely in x86-64 NASM assembly, from scratch — no C, no BIOS libraries beyond boot-time disk/keyboard calls, no existing kernel. - TheServer-lab/ShellyForever
GitHub (github.com)
Happy to go deeper on the boot process, the on-disk filesystem format, or the AI-assisted workflow if people are curious. Feedback welcome, especially from anyone who's done bare-metal x86-64 work.

Lmao this is a troll right?
- Bootloader (
-
Why I built this
I hate Unix commands.
ls,cd,rm,mv,cp— two- and three-letter cryptic abbreviations that made sense to someone in 1971 and have just been carried forward ever since because "that's how it's always been." I wanted a shell where the commands actually describe what they do, without needing to memorize a decades-old convention. So instead of complaining about it, I designed my own command set and built an OS around it from the ground up.ShellyForever (currently v0.1.1) is a 64-bit OS written completely from scratch in x86-64 NASM assembly. No C, no existing kernel, no BIOS libraries beyond boot-time disk/keyboard calls. It boots and runs on real hardware, not just in an emulator. The name's a commitment, not just a name — I plan to keep updating it forever.
To be upfront about how this was built: the assembly code itself is almost entirely AI-written. My part was designing the shell and commands — what each one should be called, how it should behave, what made sense to me as the person who'd actually be typing them — then having the AI implement that in asm and iterating with it on bugs and logic.
How it's built
- Bootloader (
boot.asm) — 512-byte boot sector. Starts in 16-bit real mode, loads the kernel off disk, switches to 32-bit protected mode, builds its own minimal page tables, switches to 64-bit long mode, jumps into the kernel. - Kernel (
kernel.asm) — everything else:- A VGA text-mode driver (writes directly to
0xB8000) with scrolling - A polled PS/2 keyboard driver (decodes scancode set 1, handles shift, backspace, enter)
rush, the custom shell — prompt, line editor, a tokenizer that understands quoted strings, and a command dispatcher- An in-memory filesystem tree rooted at
/home, with recursive copy/move/delete - A simple
name = valueint64 variable table - A built-in line editor for file content
- A VGA text-mode driver (writes directly to
The commands (no more
ls/rm/cd)Command Example What it does cfcf docs,cf ..change folder mkfmkf docsmake a folder mkflmkfl a.txt "text"make a file with content ( -force/-silent/-info/-test)deldel a.txtdelete a file (requires auth)rnamername old.txt new.txtrename a file or folder owriteowrite a.txt "new text"overwrite a file's content in place cpycpy docs docs_backupcopy a file/folder (recursive) movmov docs archivemove/rename a file/folder (recursive) showshow "hi",show aprint a message or a variable listlistlist current folder contents viewview a.txtprint a file's content findfind notes.txtsearch every drive for a name, print its path lookforlookfor "todo" notes.txtgrep a file's content, with optional line range editedit a.txtbuilt-in text editor <n> = <value>a = 5set a variable rmvrmv aremove a variable varsvarslist all variables calccalc 1 + 2 * 3evaluate a math expression rrrr script.rshrun a rush script file prsprs,prs kill 1list/kill running scripts authauth sdownelevate for one dangerous command currentcurrentprint current path wipewipeclear the screen dscandscanscan drives for existing volumes fmtfmt dataformat a drive with a volume label mountmount datamount a formatted drive under /data/labellabel old newrename a mounted drive's label aliali gs listcreate a command alias alisalislist aliases colorcolor cyanchange output text color syncsyncsave the filesystem to disk rbootrbootsave and restart (requires auth)sdownsdownsave and shut down (requires auth)Some quality-of-life extras: command history and scrollback (arrow keys),
;to chain commands on one line,~to pipe one command's output into another,$for comments, and.rshscript files for automation.Known limitations
No interrupts yet (keyboard/disk are polled), no real memory allocator (flat identity-mapped first 2MB), no ACPI (shutdown uses emulator magic ports on QEMU/Bochs/VirtualBox, halts cleanly on real hardware/anything else), and fixed-size file/folder tables for now.
Code
GitHub - TheServer-lab/ShellyForever: A 64-bit shell-based OS written entirely in x86-64 NASM assembly, from scratch — no C, no BIOS libraries beyond boot-time disk/keyboard calls, no existing kernel.
A 64-bit shell-based OS written entirely in x86-64 NASM assembly, from scratch — no C, no BIOS libraries beyond boot-time disk/keyboard calls, no existing kernel. - TheServer-lab/ShellyForever
GitHub (github.com)
Happy to go deeper on the boot process, the on-disk filesystem format, or the AI-assisted workflow if people are curious. Feedback welcome, especially from anyone who's done bare-metal x86-64 work.

If you hate commands so much why didn't you just alias them? Instead you've replaced them all with your own esoteric versions. That's fine, if it works better for you then by all means. But it's certainly not easier or better than any of the other conventions we have.
- Bootloader (
-
Why I built this
I hate Unix commands.
ls,cd,rm,mv,cp— two- and three-letter cryptic abbreviations that made sense to someone in 1971 and have just been carried forward ever since because "that's how it's always been." I wanted a shell where the commands actually describe what they do, without needing to memorize a decades-old convention. So instead of complaining about it, I designed my own command set and built an OS around it from the ground up.ShellyForever (currently v0.1.1) is a 64-bit OS written completely from scratch in x86-64 NASM assembly. No C, no existing kernel, no BIOS libraries beyond boot-time disk/keyboard calls. It boots and runs on real hardware, not just in an emulator. The name's a commitment, not just a name — I plan to keep updating it forever.
To be upfront about how this was built: the assembly code itself is almost entirely AI-written. My part was designing the shell and commands — what each one should be called, how it should behave, what made sense to me as the person who'd actually be typing them — then having the AI implement that in asm and iterating with it on bugs and logic.
How it's built
- Bootloader (
boot.asm) — 512-byte boot sector. Starts in 16-bit real mode, loads the kernel off disk, switches to 32-bit protected mode, builds its own minimal page tables, switches to 64-bit long mode, jumps into the kernel. - Kernel (
kernel.asm) — everything else:- A VGA text-mode driver (writes directly to
0xB8000) with scrolling - A polled PS/2 keyboard driver (decodes scancode set 1, handles shift, backspace, enter)
rush, the custom shell — prompt, line editor, a tokenizer that understands quoted strings, and a command dispatcher- An in-memory filesystem tree rooted at
/home, with recursive copy/move/delete - A simple
name = valueint64 variable table - A built-in line editor for file content
- A VGA text-mode driver (writes directly to
The commands (no more
ls/rm/cd)Command Example What it does cfcf docs,cf ..change folder mkfmkf docsmake a folder mkflmkfl a.txt "text"make a file with content ( -force/-silent/-info/-test)deldel a.txtdelete a file (requires auth)rnamername old.txt new.txtrename a file or folder owriteowrite a.txt "new text"overwrite a file's content in place cpycpy docs docs_backupcopy a file/folder (recursive) movmov docs archivemove/rename a file/folder (recursive) showshow "hi",show aprint a message or a variable listlistlist current folder contents viewview a.txtprint a file's content findfind notes.txtsearch every drive for a name, print its path lookforlookfor "todo" notes.txtgrep a file's content, with optional line range editedit a.txtbuilt-in text editor <n> = <value>a = 5set a variable rmvrmv aremove a variable varsvarslist all variables calccalc 1 + 2 * 3evaluate a math expression rrrr script.rshrun a rush script file prsprs,prs kill 1list/kill running scripts authauth sdownelevate for one dangerous command currentcurrentprint current path wipewipeclear the screen dscandscanscan drives for existing volumes fmtfmt dataformat a drive with a volume label mountmount datamount a formatted drive under /data/labellabel old newrename a mounted drive's label aliali gs listcreate a command alias alisalislist aliases colorcolor cyanchange output text color syncsyncsave the filesystem to disk rbootrbootsave and restart (requires auth)sdownsdownsave and shut down (requires auth)Some quality-of-life extras: command history and scrollback (arrow keys),
;to chain commands on one line,~to pipe one command's output into another,$for comments, and.rshscript files for automation.Known limitations
No interrupts yet (keyboard/disk are polled), no real memory allocator (flat identity-mapped first 2MB), no ACPI (shutdown uses emulator magic ports on QEMU/Bochs/VirtualBox, halts cleanly on real hardware/anything else), and fixed-size file/folder tables for now.
Code
GitHub - TheServer-lab/ShellyForever: A 64-bit shell-based OS written entirely in x86-64 NASM assembly, from scratch — no C, no BIOS libraries beyond boot-time disk/keyboard calls, no existing kernel.
A 64-bit shell-based OS written entirely in x86-64 NASM assembly, from scratch — no C, no BIOS libraries beyond boot-time disk/keyboard calls, no existing kernel. - TheServer-lab/ShellyForever
GitHub (github.com)
Happy to go deeper on the boot process, the on-disk filesystem format, or the AI-assisted workflow if people are curious. Feedback welcome, especially from anyone who's done bare-metal x86-64 work.

Seems far more esoteric than existing UNIX commands, even weirder that some of them the description can only be understood if you already know better unix commands.
grep a file's content, with optional line range
If I didn't already know what grep was, how would this be helpful, if I do know what grep is - why would I want it changed?
Change for changes sake is never good.
- Bootloader (
-
Why I built this
I hate Unix commands.
ls,cd,rm,mv,cp— two- and three-letter cryptic abbreviations that made sense to someone in 1971 and have just been carried forward ever since because "that's how it's always been." I wanted a shell where the commands actually describe what they do, without needing to memorize a decades-old convention. So instead of complaining about it, I designed my own command set and built an OS around it from the ground up.ShellyForever (currently v0.1.1) is a 64-bit OS written completely from scratch in x86-64 NASM assembly. No C, no existing kernel, no BIOS libraries beyond boot-time disk/keyboard calls. It boots and runs on real hardware, not just in an emulator. The name's a commitment, not just a name — I plan to keep updating it forever.
To be upfront about how this was built: the assembly code itself is almost entirely AI-written. My part was designing the shell and commands — what each one should be called, how it should behave, what made sense to me as the person who'd actually be typing them — then having the AI implement that in asm and iterating with it on bugs and logic.
How it's built
- Bootloader (
boot.asm) — 512-byte boot sector. Starts in 16-bit real mode, loads the kernel off disk, switches to 32-bit protected mode, builds its own minimal page tables, switches to 64-bit long mode, jumps into the kernel. - Kernel (
kernel.asm) — everything else:- A VGA text-mode driver (writes directly to
0xB8000) with scrolling - A polled PS/2 keyboard driver (decodes scancode set 1, handles shift, backspace, enter)
rush, the custom shell — prompt, line editor, a tokenizer that understands quoted strings, and a command dispatcher- An in-memory filesystem tree rooted at
/home, with recursive copy/move/delete - A simple
name = valueint64 variable table - A built-in line editor for file content
- A VGA text-mode driver (writes directly to
The commands (no more
ls/rm/cd)Command Example What it does cfcf docs,cf ..change folder mkfmkf docsmake a folder mkflmkfl a.txt "text"make a file with content ( -force/-silent/-info/-test)deldel a.txtdelete a file (requires auth)rnamername old.txt new.txtrename a file or folder owriteowrite a.txt "new text"overwrite a file's content in place cpycpy docs docs_backupcopy a file/folder (recursive) movmov docs archivemove/rename a file/folder (recursive) showshow "hi",show aprint a message or a variable listlistlist current folder contents viewview a.txtprint a file's content findfind notes.txtsearch every drive for a name, print its path lookforlookfor "todo" notes.txtgrep a file's content, with optional line range editedit a.txtbuilt-in text editor <n> = <value>a = 5set a variable rmvrmv aremove a variable varsvarslist all variables calccalc 1 + 2 * 3evaluate a math expression rrrr script.rshrun a rush script file prsprs,prs kill 1list/kill running scripts authauth sdownelevate for one dangerous command currentcurrentprint current path wipewipeclear the screen dscandscanscan drives for existing volumes fmtfmt dataformat a drive with a volume label mountmount datamount a formatted drive under /data/labellabel old newrename a mounted drive's label aliali gs listcreate a command alias alisalislist aliases colorcolor cyanchange output text color syncsyncsave the filesystem to disk rbootrbootsave and restart (requires auth)sdownsdownsave and shut down (requires auth)Some quality-of-life extras: command history and scrollback (arrow keys),
;to chain commands on one line,~to pipe one command's output into another,$for comments, and.rshscript files for automation.Known limitations
No interrupts yet (keyboard/disk are polled), no real memory allocator (flat identity-mapped first 2MB), no ACPI (shutdown uses emulator magic ports on QEMU/Bochs/VirtualBox, halts cleanly on real hardware/anything else), and fixed-size file/folder tables for now.
Code
GitHub - TheServer-lab/ShellyForever: A 64-bit shell-based OS written entirely in x86-64 NASM assembly, from scratch — no C, no BIOS libraries beyond boot-time disk/keyboard calls, no existing kernel.
A 64-bit shell-based OS written entirely in x86-64 NASM assembly, from scratch — no C, no BIOS libraries beyond boot-time disk/keyboard calls, no existing kernel. - TheServer-lab/ShellyForever
GitHub (github.com)
Happy to go deeper on the boot process, the on-disk filesystem format, or the AI-assisted workflow if people are curious. Feedback welcome, especially from anyone who's done bare-metal x86-64 work.

Honestly, my biggest complaint about Linux is the unmount command. Really? They couldn't add one more character to 'umount'?
Likewise, you have lots of four character commands. Why drop one character from move and copy?
- Bootloader (
-
Why I built this
I hate Unix commands.
ls,cd,rm,mv,cp— two- and three-letter cryptic abbreviations that made sense to someone in 1971 and have just been carried forward ever since because "that's how it's always been." I wanted a shell where the commands actually describe what they do, without needing to memorize a decades-old convention. So instead of complaining about it, I designed my own command set and built an OS around it from the ground up.ShellyForever (currently v0.1.1) is a 64-bit OS written completely from scratch in x86-64 NASM assembly. No C, no existing kernel, no BIOS libraries beyond boot-time disk/keyboard calls. It boots and runs on real hardware, not just in an emulator. The name's a commitment, not just a name — I plan to keep updating it forever.
To be upfront about how this was built: the assembly code itself is almost entirely AI-written. My part was designing the shell and commands — what each one should be called, how it should behave, what made sense to me as the person who'd actually be typing them — then having the AI implement that in asm and iterating with it on bugs and logic.
How it's built
- Bootloader (
boot.asm) — 512-byte boot sector. Starts in 16-bit real mode, loads the kernel off disk, switches to 32-bit protected mode, builds its own minimal page tables, switches to 64-bit long mode, jumps into the kernel. - Kernel (
kernel.asm) — everything else:- A VGA text-mode driver (writes directly to
0xB8000) with scrolling - A polled PS/2 keyboard driver (decodes scancode set 1, handles shift, backspace, enter)
rush, the custom shell — prompt, line editor, a tokenizer that understands quoted strings, and a command dispatcher- An in-memory filesystem tree rooted at
/home, with recursive copy/move/delete - A simple
name = valueint64 variable table - A built-in line editor for file content
- A VGA text-mode driver (writes directly to
The commands (no more
ls/rm/cd)Command Example What it does cfcf docs,cf ..change folder mkfmkf docsmake a folder mkflmkfl a.txt "text"make a file with content ( -force/-silent/-info/-test)deldel a.txtdelete a file (requires auth)rnamername old.txt new.txtrename a file or folder owriteowrite a.txt "new text"overwrite a file's content in place cpycpy docs docs_backupcopy a file/folder (recursive) movmov docs archivemove/rename a file/folder (recursive) showshow "hi",show aprint a message or a variable listlistlist current folder contents viewview a.txtprint a file's content findfind notes.txtsearch every drive for a name, print its path lookforlookfor "todo" notes.txtgrep a file's content, with optional line range editedit a.txtbuilt-in text editor <n> = <value>a = 5set a variable rmvrmv aremove a variable varsvarslist all variables calccalc 1 + 2 * 3evaluate a math expression rrrr script.rshrun a rush script file prsprs,prs kill 1list/kill running scripts authauth sdownelevate for one dangerous command currentcurrentprint current path wipewipeclear the screen dscandscanscan drives for existing volumes fmtfmt dataformat a drive with a volume label mountmount datamount a formatted drive under /data/labellabel old newrename a mounted drive's label aliali gs listcreate a command alias alisalislist aliases colorcolor cyanchange output text color syncsyncsave the filesystem to disk rbootrbootsave and restart (requires auth)sdownsdownsave and shut down (requires auth)Some quality-of-life extras: command history and scrollback (arrow keys),
;to chain commands on one line,~to pipe one command's output into another,$for comments, and.rshscript files for automation.Known limitations
No interrupts yet (keyboard/disk are polled), no real memory allocator (flat identity-mapped first 2MB), no ACPI (shutdown uses emulator magic ports on QEMU/Bochs/VirtualBox, halts cleanly on real hardware/anything else), and fixed-size file/folder tables for now.
Code
GitHub - TheServer-lab/ShellyForever: A 64-bit shell-based OS written entirely in x86-64 NASM assembly, from scratch — no C, no BIOS libraries beyond boot-time disk/keyboard calls, no existing kernel.
A 64-bit shell-based OS written entirely in x86-64 NASM assembly, from scratch — no C, no BIOS libraries beyond boot-time disk/keyboard calls, no existing kernel. - TheServer-lab/ShellyForever
GitHub (github.com)
Happy to go deeper on the boot process, the on-disk filesystem format, or the AI-assisted workflow if people are curious. Feedback welcome, especially from anyone who's done bare-metal x86-64 work.

You complain about cd (change directory) and instead replace it with cf (change folder)? How is that any better? The keys even have the same distance to each other.
What?
- Bootloader (
Ciao! Sembra che tu sia interessato a questa conversazione, ma non hai ancora un account.
Stanco di dover scorrere gli stessi post a ogni visita? Quando registri un account, tornerai sempre esattamente dove eri rimasto e potrai scegliere di essere avvisato delle nuove risposte (tramite email o notifica push). Potrai anche salvare segnalibri e votare i post per mostrare il tuo apprezzamento agli altri membri della comunità.
Con il tuo contributo, questo post potrebbe essere ancora migliore 💗
Registrati Accedi
Citiverse è un progetto che si basa su NodeBB ed è federato! | Categorie federate | Chat | 📱 Installa web app o APK | 🧡 Donazioni | Privacy Policy