Getting Started¶
This guide walks you through building Endo from source, launching the shell, and writing your first commands.
Prerequisites¶
Before building, ensure you have:
- A C++23-compatible compiler (Clang 17+ recommended, GCC 14+ also works)
- CMake 3.26 or newer
- Git for cloning the repository
- A Linux or macOS system (Windows support is in progress)
Compiler Support
Endo uses modern C++23 features including std::expected, std::format, and constexpr extensively. Clang 17+ with libc++ provides the best support.
Build from Source¶
Clone the Repository¶
Configure and Build¶
Endo uses CMake presets for streamlined builds. For a release build (recommended for daily use):
For a debug build (for development and testing):
Install (Optional)¶
Launch Endo¶
After building, launch the interactive shell:
You should see the Endo prompt. Try a few commands:
Hello World¶
Shell Style¶
F# Style¶
With String Interpolation¶
Combining Shell and F¶
# Capture shell output and process it functionally
let user = & whoami
println $"Welcome, {user}!"
# Pipe shell output into F# functions
ls | lines |> length |> fun n -> println $"Found {n} entries"
Run the Tests¶
To verify your build is working correctly:
Or for the debug build:
Configuration¶
Endo loads ~/.config/endo/init.endo on startup. You can place aliases, prompt configuration, and other setup there:
# ~/.config/endo/init.endo
# Set the prompt preset
set_prompt_preset "endo-signature"
# Define aliases
let ll ...args = & exa -l ...args
let gs ...args = & git status ...args
Next Steps¶
- Shell Features -- Learn about interactive features, builtins, and structured output
- Language Reference -- Deep dive into the Endo language
- FAQ -- Common questions about pipes, lambdas, and more
- Examples -- Practical code examples
- Contributing -- Help shape Endo's future