Write automation, data pipelines and system scripts
in a few readable lines, with built-in tooling.
import fs
# Find Nexo scripts and read them in one flow
fs.list("./src")
|> filter(fn(f): f.endswith(".nx"))
|> map(fn(f): fs.read(f))
|> print
A single idea, written with different levels of ceremony.
[ -f config.json ] && echo true || echo false
python3 -c "import os;print(os.path.isfile('config.json'))"
node -e "const fs=require('fs');console.log(fs.existsSync('config.json'))"
fs_exists("config.json") |> print
In Nexo, this is the program.
Small changes can have big effects. Error handling is often implicit.
A "quick script" often turns into hundreds of lines of imports, boilerplate and edge cases.
Linters, formatters, type checks. Set up separately, configured differently.
Nexo was designed to reduce this friction.
A compiled scripting language designed for automation, data flows and system tasks. Clean syntax. Built-in tooling. No ceremony.
Chain operations with |> for clear, readable data flows.
Static analysis catches errors before runtime. No extra setup.
File ops, shell commands, JSON, C FFI and Python. All built in.
Compile once to .nxbc, run anywhere with the Nexo VM.
The pipeline operator |> lets you chain transformations
the way you actually think about data, step by step.
import fs
# Read a JSON config, filter active items, and save the result
data = fs.read("config.json")
|> json_parse
|> filter(fn(item): item.active)
|> json_stringify
fs.write("active.json", data)
print("Done. Filtered and saved.")
This is how automation should read.
Nexo ships with static analysis and strict mode out of the box. No plugins to install, no configs to maintain.
try/catch
"Write scripts you can trust."
$ nexo lint --strict deploy.nx
warning: unused variable 'tmp' (line 12)
error: unreachable code after return (line 24)
$ nexo run deploy.nx
Deploy complete.
Real tasks, not toy examples.
List, read, write, rename and organize files with the fs module.
Parse JSON, filter, map and reduce data through clean pipelines.
Run shell commands, check exit codes, and orchestrate processes with proc.
Build small command-line utilities that do one thing well.
Call C libraries via FFI, run Python scripts, and bridge ecosystems.
Automate builds, deployments and repetitive ops tasks.
Real examples. Runnable code. No fluff.
Chain transformations with |>
# Transform data step by step
numbers = [1, 2, 3, 4, 5]
result = numbers
|> filter(fn(x): x > 2)
|> map(fn(x): x * 2)
|> reduce(fn(a, b): a + b, 0)
print(result) # 24
Read, write, and list files
import fs
# Read file contents
content = fs.read("config.json")
# Write to file
fs.write("output.txt", "Hello, Nexo!")
# List and iterate
files = fs.list("./src")
for file in files:
print(file)
Run shell commands and inspect results
import proc
# Run a command
result = proc.run("ls -la")
print(result.out)
# Check for errors
if result.code != 0:
print("Error: " + result.err)
Parse and stringify JSON natively
# Parse JSON string
data = json_parse('{"name": "Nexo", "v": 9}')
print(data.name) # Nexo
# Create JSON output
obj = {"status": "ok", "count": 42}
print(json_stringify(obj))
Call C libraries directly
# Load a shared library
lib = ffi_load("mymath.so")
# Call an exported C function
result = ffi_call(lib, "add", [10, 20])
print("10 + 20 = " + str(result))
Run Python scripts and get structured output
import py
# Run Python script with input
data = py.run("process.py", "input")
# Python returns JSON via stdout
print(data.result)
print(data.items)
Nexo is not a prototype. It's a language with its own compiler, VM and toolchain, written in Rust.
nexo run
Execute .nx source or .nxbc bytecode directly
nexo --emit
Compile to bytecode without executing. Portable and versioned
nexo lint
Static analysis with optional --strict mode
nexo repl
Interactive REPL with multiline support
nexo lsp
Language Server Protocol. Works with VS Code, Neovim and more
One line should do real work
No setup, no boilerplate. Express intent directly.
Flow over ceremony
Pipelines are a first-class concept, not an afterthought.
Safety is not optional
Static analysis and strict mode ship with the language.
Fewer features, more composition
Small primitives that combine well beat large APIs.
Tooling is part of the language
Linter, REPL and LSP. Not third-party add-ons.
Interop over re-invention
Call C, run Python, pipe shell commands. Use what already works.
Pick your platform and start scripting with Nexo.
Current version: v1.0
Downloads the official binary and adds it to your PATH
curl -fsSL https://nexocore.dev/scripts/install.sh | sh
Downloads and runs the official Windows installer (.exe)
irm https://nexocore.dev/scripts/install.ps1 | iex
Stop fighting your tools. Write clean, composable automation, starting now.