endo
Health Uyari
- License — License: Apache-2.0
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 7 GitHub stars
Code Gecti
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Gecti
- Permissions — No dangerous permissions requested
This project is a modern, cross-platform shell and scripting language inspired by F#. It is designed to replace traditional shells like Bash by bringing functional programming features, structured data pipelines, and type inference directly to the terminal.
Security Assessment
As a shell environment, the tool's core function is to execute system commands and interact with the operating system. This is standard behavior for a terminal, though it inherently handles system-level execution. The automated code scan found no dangerous patterns, hardcoded secrets, or requests for risky permissions. Because it is an early-stage programming language and shell, it will process whatever data the user feeds it, but the provided code itself poses no apparent threat. Overall risk: Medium (inherent to all shell interpreters, but the code is clean).
Quality Assessment
The project is licensed under the permissive Apache-2.0 license and received a repository push very recently, showing active development. However, it currently has very low community visibility with only 7 GitHub stars. The developers explicitly state that the project is in early development without an official release, meaning the language, builtins, and APIs are subject to breaking changes.
Verdict
Use with caution — the code appears safe, but expect potential instability and breaking changes due to the project's early development stage and extremely low community adoption.
A modern, cross-platform functional-first shell programming
Endo
A modern, cross-platform shell where functional programming meets everyday productivity.
The shell you always wanted — F#-inspired, Bash-convenient, everywhere.
Getting Started · Features · Examples · Documentation · Installation · Contributing
Early Development — Endo is under active development and has not yet had an official release.
The language, builtins, and APIs may change. That said, there is already a lot to explore — dive in and share your feedback!
Why Endo?
Shells haven't evolved. You're still gluing strings together, guessing at exit codes, and writing
brittle pipelines. Endo changes that. It brings the expressive power of functional programming
to your terminal — without sacrificing the quick-and-dirty convenience you rely on every day.
- Pipelines that carry structured data, not just text
- Pattern matching and algebraic types right at your prompt
- Type inference that stays out of your way until you need it
- One shell, every platform — no more
#!/bin/bashon machines that don't have it
Features
Functional at Its Core
Endo's language is heavily inspired by F#. Pipe operators, pattern matching, immutable-by-default
bindings, and first-class functions are not bolted on — they're the foundation.
Bash-Like When You Need It
Run commands, redirect output, glob files, chain with && and ||. If your muscle memory
speaks Bash, Endo understands.
Structured Pipelines
Stop parsing grep | awk | sed chains. Endo pipelines pass typed records between stages,
so data stays intact from source to sink.
Cross-Platform, No Compromises
Native support for Linux, macOS, and Windows. Write scripts once, run them everywhere —
no compatibility layers, no emulation.
Intelligent Completions
Context-aware tab completions powered by the type system. Endo knows what a command expects
before you finish typing it.
Sane Error Handling
No more silent failures. Endo uses result types inspired by Result<T, E>, giving you
explicit, composable error handling without the ceremony.
Examples
Familiar commands, elevated syntax:
# It's still a shell — run anything
ls -la
git status && echo "All clean"
# F#-style bindings and string interpolation
let name = "world"
println $"Hello, {name}!"
Shell output meets functional pipelines:
# Pipe shell command output straight into F# transforms — it's still a shell
ps aux |> lines |> filter (contains "nginx" _) |> length
|> fun n -> println $"Found {n} nginx processes"
# Process git history with functional pipelines
git log --oneline |> lines |> take 5 |> each println
Functional data processing:
# Placeholder lambdas keep pipelines concise
[10; 25; 3; 42; 7] |> filter (_ > 10) |> map (_ * 2) # [50; 84]
# Curried functions and partial application
let add x y = x + y
let add10 = add 10
[1; 2; 3] |> map add10 # [11; 12; 13]
# Function composition
let double = _ * 2
let inc = _ + 1
let doubleThenInc = double >> inc
print (doubleThenInc 5) # 11
Pattern matching at your prompt:
# Option types for safe value handling
match (env "EDITOR") with
| Some editor -> print $"Using {editor}"
| None -> print "No editor set"
# Result types for explicit error handling
let safeDiv x y =
if y == 0 then Error "division by zero"
else Ok (x / y)
match safeDiv 10 0 with
| Ok n -> print $"Result: {n}"
| Error e -> print $"Failed: {e}"
Lists, ranges, and comprehensions:
# Ranges and comprehensions
let squares = [for x in [1..10] -> x * x]
let evens = [for x in [1..20] when x % 2 == 0 -> x]
# Recursive processing with pattern matching
let rec sum acc lst =
match lst with
| [] -> acc
| head :: tail -> sum (acc + head) tail
print (sum 0 [1; 2; 3; 4; 5]) # 15
Cross-platform scripting:
# Works the same on Linux, macOS, and Windows
let config_dir =
match (env "OS") with
| Some "Windows_NT" -> "C:/Users/endo/config"
| _ -> $"{env "HOME" ?| "/tmp"}/.config/endo"
mkdir -p $config_dir
Getting Started
# Clone and build
git clone https://github.com/contour-terminal/endo.git
cd endo
cmake --preset clang-release
cmake --build --preset clang-release
# Launch
./build/clang-release/src/shell/endo
Installation
From Source
git clone https://github.com/contour-terminal/endo.git
cd endo
cmake --preset clang-release
cmake --build --preset clang-release
sudo cmake --install build/clang-release
Package Managers
Coming soon — Homebrew, Scoop, and distro packages are on the roadmap.
Contributing
Contributions are welcome. Whether it's a bug report, a feature request, or a pull request —
every bit helps shape Endo into the shell it should be.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-thing) - Commit your changes
- Open a pull request
Please see CONTRIBUTING.md for detailed guidelines.
License
Licensed under the Apache License 2.0. See LICENSE for details.
Endo — Stop parsing. Start piping.
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi