The HagalazOS terminal recognises a fixed set of built-in commands. Each command is entered at theDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/linuxfandudeguy/HagalazOS/llms.txt
Use this file to discover all available pages before exploring further.
user@hagalaz:~$ prompt and executed when you press Enter. There is no shell scripting, piping, or file-system access — each command maps directly to a JavaScript function defined in terminal.html.
help
List all available commands
time
Print the current local date and time
echo
Repeat text back to the terminal
curl
Fetch a URL via libcurl.js / Wisp
ip
Look up your public IP address
games
Open the MelonSoda games library
neofetch
Print browser and platform info
gui
Chainload into GUI mode
luminsdk
Open the Lumin SDK in a new tab
help
Syntax:help
Prints the list of all available commands to the terminal output. No arguments are accepted. This is always the first command to run when exploring a new HagalazOS installation.
time
Syntax:time
Prints the current local date and time by evaluating new Date().toString(). The string format is determined entirely by the browser’s locale and timezone settings — it matches whatever JavaScript’s Date object returns in the user’s environment (e.g. Mon Jul 07 2025 14:32:10 GMT+0100 (British Summer Time)).
echo
Syntax:echo <text>
Prints everything after the leading echo (note the trailing space) back to the terminal output as-is. There is no variable substitution, escape-sequence processing, or shell expansion — the text is passed directly to the print() helper.
cmd.slice(5)), so echo (with a space) is the required prefix.
curl
Syntax:curl <url>
Fetches the resource at <url> using libcurl.fetch() — a WebAssembly HTTP client that routes requests through the configured Wisp WebSocket proxy (wss://wisp.mercurywork.shop/). The response body is read as text and up to 3 000 characters are printed to the terminal. Any content beyond that limit is silently truncated.
curl depends on the libcurl.js WebAssembly module finishing its initialisation before the command is called. The module signals readiness by emitting the libcurl_load DOM event, after which libcurl.set_websocket() configures the proxy. If you run curl before the Wasm binary has fully loaded the call will throw a JavaScript error. Wait a moment after the page loads before issuing network commands.curl error: <message>.
ip
Syntax:ip
Fetches https://api.ipify.org?format=json using the standard browser fetch API (not libcurl) and prints your public IPv4 address in green (#6cff6c) in the format IP: <address>. This command uses the browser’s native networking stack directly, so it works independently of the libcurl.js load state.
IP fetch failed is printed in red.
games
Syntax:games
Opens a new browser tab (window.open("about:blank")) and writes a small bootstrap page into it. That page immediately fetches the MelonSoda offline games library from:
document.write(), replacing the blank page with the full MelonSoda game loader.
neofetch
Syntax:neofetch
Prints a styled system-information summary to the terminal output, styled after the classic neofetch Unix utility. All values are read from browser Web APIs — no native system access is involved.
| Field | Source |
|---|---|
| OS | Hard-coded string "HagalazOS" |
| Browser | navigator.userAgent |
| Platform | navigator.platform |
| Lang | navigator.language |
| Cookies | navigator.cookieEnabled |
──────── neofetch ────────) and footer (--------------------------) are rendered in orange (#ff8000).
gui
Syntax:gui
Chainloads HagalazOS into its full graphical desktop (GUI) mode. The command fetches ossingle.html from the HagalazOS GitHub repository master branch:
document.write(), completely replacing the terminal page in-place. There is no separate tab or window — the terminal is substituted for the GUI within the same browsing context.
luminsdk
Syntax:luminsdk
Opens a new browser tab (window.open("about:blank")) and writes a self-contained page into it that initialises the Lumin SDK in dark theme. The tab loads lumin.min.js from its CDN and calls:
#games div inside the new tab is the mount point for the SDK UI.
Error handling
When you type a command that is not in the built-in list, the terminal prints the following message in red (#ff5555):
<cmd> is whatever you typed. Empty input (pressing Enter with nothing in the field) is silently ignored — no error is printed and the prompt is not echoed.
Enter keypress is evaluated independently.