No description
  • Scheme 43.8%
  • Rust 40.3%
  • Shell 9.2%
  • C 3.2%
  • Makefile 1.8%
  • Other 1.7%
Find a file
ober 621aa7f5cb
All checks were successful
required-ci / required (push) Successful in 13m32s
Merge pull request #98
2026-09-24 13:21:53 -04:00
.forgejo ci: make full verification noninteractive 2026-09-19 15:56:12 -06:00
.jerboa Add shell security gate and sanitize evidence 2026-06-25 20:12:46 -06:00
.jpkg add jpkg 2026-07-24 14:46:53 -06:00
android fix(android): make android the one-command APK entry point 2026-09-23 16:23:00 -06:00
docs Document conduit limits and prompt mode 2026-09-23 19:47:24 -06:00
genode build: advance version for Android work 2026-09-22 16:00:15 -06:00
jerboa-src/src fix: build jsh-macos with host jerboa 0.6.1 (no raw chez) 2026-08-05 16:07:54 -06:00
patches feat: integrate repaired shell utilities 2026-09-10 21:09:33 -06:00
rust-coreutils feat: integrate repaired shell utilities 2026-09-10 21:09:33 -06:00
rust-module-host Test latest compatible module selection 2026-09-12 02:37:06 -06:00
support Provide static renameat2 compatibility symbol 2026-09-23 20:43:55 -06:00
test Fix conduit probe command formatting 2026-09-23 19:47:33 -06:00
tools fix(build): handle detached embed selection tty 2026-09-23 05:23:35 -06:00
.gitattributes feat: reintegrate encrypted jdrive 2026-09-04 11:34:09 -06:00
.gitignore Add signed encrypted Rust module host 2026-09-11 15:55:52 -06:00
.gitsafe.json Initial modern minimal jsh build 2026-06-18 20:57:29 -06:00
.gitsafeignore Set up Forgejo CI/CD policy 2026-08-03 12:50:52 -06:00
.jerbuild Harden process isolation and FFI loading 2026-07-11 17:25:56 -06:00
.jerbuild.freebsd-amd64 Merge master and use vendored build inputs 2026-09-02 20:09:33 -06:00
.jerbuild.freebsd-arm64 Merge master and use vendored build inputs 2026-09-02 20:09:33 -06:00
.jerbuild.linux-amd64 Merge master and use vendored build inputs 2026-09-02 20:09:33 -06:00
.jerbuild.linux-amd64-native Merge master and use vendored build inputs 2026-09-02 20:09:33 -06:00
.jerbuild.test-static test: support privileged static FFI verification 2026-09-11 02:02:44 -06:00
.jpkgignore jpkg: complete binary package setup 2026-07-30 15:32:22 -06:00
AGENTS.md docs(agents): add checkout hygiene policy (work dirs under ~/work, cleanup when done) 2026-09-12 19:14:29 -06:00
arithmetic.ss Strip jsh to compact shell 2026-06-18 22:17:25 -06:00
ast.ss Strip jsh to compact shell 2026-06-18 22:17:25 -06:00
bash-compatibility.md Fix all real-world stdin gaps and missing builtins 2026-07-25 12:21:08 -06:00
bench-smp.chez.ss Security hardening and release readiness 2026-06-23 10:51:16 -06:00
bench-smp.ss Initial modern minimal jsh build 2026-06-18 20:57:29 -06:00
bench.ss Initial modern minimal jsh build 2026-06-18 20:57:29 -06:00
build-all.ss Add cross-platform build targets 2026-07-16 21:48:58 -06:00
build-jsh-cross.ss Fix cross-link command formatting 2026-09-23 20:17:37 -06:00
build-jsh-freebsd-cross.ss Register complete SSH agent FFI set in static builds 2026-09-19 17:15:56 -06:00
build-jsh-freebsd.sh Add cross-platform build targets 2026-07-16 21:48:58 -06:00
build-jsh-freebsd.ss Register complete SSH agent FFI set in static builds 2026-09-19 17:15:56 -06:00
build-jsh-macos.sh Set up Forgejo CI/CD policy 2026-08-03 12:50:52 -06:00
build-jsh-macos.ss Register complete SSH agent FFI set in static builds 2026-09-19 17:15:56 -06:00
build-jsh-musl.sh Add cross-platform build targets 2026-07-16 21:48:58 -06:00
build-jsh-musl.ss Register complete SSH agent FFI set in static builds 2026-09-19 17:15:56 -06:00
build-jsh.ss Add explicit feature module loader registry 2026-09-11 15:55:52 -06:00
builtins.ss Fix unattended extras build 2026-08-10 20:39:08 -06:00
CLAUDE.md Strip jsh to compact shell 2026-06-18 22:17:25 -06:00
completion.ss fix: complete tilde-prefixed paths 2026-09-22 10:48:50 -06:00
control.ss Initial modern minimal jsh build 2026-06-18 20:57:29 -06:00
environment.ss Fix unattended extras build 2026-08-10 20:39:08 -06:00
executor.ss Security hardening and release readiness 2026-06-23 10:51:16 -06:00
expander.ss Fix all real-world stdin gaps and missing builtins 2026-07-25 12:21:08 -06:00
feature-resolve.ss Disable record in default feature aggregate 2026-08-30 18:30:37 -06:00
features.def Add conduit feature selection and documentation 2026-09-23 19:47:19 -06:00
ffi-shim.c feat: add native Genode shell-core port 2026-08-25 16:24:37 -06:00
functions.ss Strip jsh to compact shell 2026-06-18 22:17:25 -06:00
fuzzy.ss Fix unattended extras build 2026-08-10 20:39:08 -06:00
gen-embed.ss Add cross-platform build targets 2026-07-16 21:48:58 -06:00
glob.ss Fix unattended extras build 2026-08-10 20:39:08 -06:00
history.ss fix: load encrypted shell state in background 2026-09-04 13:26:17 -06:00
jobs.ss Harden process isolation and FFI loading 2026-07-11 17:25:56 -06:00
jpkg.lock jpkg: complete binary package setup 2026-07-30 15:32:22 -06:00
jpkg.policy.sexp jpkg: complete binary package setup 2026-07-30 15:32:22 -06:00
jpkg.sexp build: advance version for Android work 2026-09-22 16:00:15 -06:00
jsh-generate.ss Add cross-platform build targets 2026-07-16 21:48:58 -06:00
jsh.ss fixes 2026-07-19 17:46:25 -06:00
lexer.ss Strip jsh to compact shell 2026-06-18 22:17:25 -06:00
lib.ss Add embeddable jsh library module 2026-07-30 10:30:32 -06:00
LICENSE Switch to MIT license 2026-07-21 13:42:19 -06:00
lineedit.ss fix completion escaping for whitespace 2026-09-06 13:31:04 -06:00
macros.ss Strip jsh to compact shell 2026-06-18 22:17:25 -06:00
main.ss Redact conduit input from dispatch observers 2026-09-23 19:47:24 -06:00
Makefile Consume conduit parser boundary tests 2026-09-23 21:39:21 -06:00
minimal-astra-modules.md Record module artifact baseline 2026-09-12 02:51:14 -06:00
module-loader.ss Harden module activation transaction 2026-09-12 02:38:55 -06:00
module-protocol.ss Add explicit feature module loader registry 2026-09-11 15:55:52 -06:00
parser.ss fix for loop 2026-07-30 19:52:01 -06:00
pipeline.ss Fix all real-world stdin gaps and missing builtins 2026-07-25 12:21:08 -06:00
pregexp-compat.ss Initial modern minimal jsh build 2026-06-18 20:57:29 -06:00
prompt.ss Fix Git branch prompt detection 2026-07-30 16:53:00 -06:00
README.md feat: integrate repaired shell utilities 2026-09-10 21:09:33 -06:00
redirect.ss fix: input redirect nofollow, history symlink protection, SIGWINCH 2026-07-21 10:42:00 -06:00
registry.ss Fix unattended extras build 2026-08-10 20:39:08 -06:00
script.ss fixes for while : 2026-07-23 20:08:32 -06:00
SECURITY.md updates 2026-07-16 21:51:35 -06:00
shell-missing.md Point Oils jsh tests at Forgejo 2026-07-30 19:49:53 -06:00
signals.ss Fix unattended extras build 2026-08-10 20:39:08 -06:00
startup.ss Strip jsh to compact shell 2026-06-18 22:17:25 -06:00
util.ss Security hardening and release readiness 2026-06-23 10:51:16 -06:00
VERSION Bump shell conduit version 2026-09-23 19:47:24 -06:00

jerboa-shell

jerboa-shell is jsh: a compact shell written in Jerboa Scheme. It focuses on familiar bash/zsh-style command execution: parsing, expansion, builtins, redirection, pipelines, jobs, history, completion, and POSIX process behavior.

Security posture, threat model, native-boundary notes, and release evidence are tracked in SECURITY.md, docs/threat-model.md, docs/ffi-boundary.md, and docs/release-evidence.md. jsh is a shell, not a sandbox.

Build

make jsh-macos
./jsh-macos -c 'echo ok'

The build uses jerbuild from Jerboa. The Makefile prefers ./jerbuild, then .jerboa/bin/jerbuild, then jerbuild on PATH; if none are available it fetches the configured Jerboa release tool.

The default targets build only the bare shell. To fetch the extras bundle and its selected dependencies and produce ./jsh-extras, run:

make extras

The optional bundle currently covers 21 selectable groups, including built-in coreutils, mux, encrypted embed/pass/vault storage, SSH, YubiKey, AWS, the encrypted jdrive S3 drive, recording, terminal system tools and process monitoring, wormhole, sandboxing, resource limits, profiling, proxying, WireGuard, process watching, hardening, AWK, and sed. See docs/extras.md for the complete command reference, selection rules, platform requirements, security boundaries, and known limitations.

The top-level target prompts for optional feature selection and embed input. Pass JSH_FEATURES=... make extras for unattended builds; the extras guide shows the encrypted embed options.

Test

make test
make test-native
make test-security-regressions
make audit
make release-evidence
make test-binary
make compat-smoke

The Oils spec runner under test/ measures shell compatibility. Benchmark scripts live here so speed work stays close to the shell implementation. make release-evidence records unit tests, native FFI audit output, SBOM manifests, and reproducibility output under dist/release-evidence/.

Command substitution is drained concurrently and is limited to 8 MiB by default. Set JSH_COMMAND_SUB_MAX_BYTES to a positive byte limit no greater than 1 GiB when a workload needs a different bound. Exceeding the limit aborts the expansion after the producer has been drained, rather than hanging it on a full pipe.

Interpreted development runs load libjsh-ffi only when JSH_FFI_DEV_NATIVE=1 and JSH_FFI_LIB names an absolute, non-symlink directory. Standalone builds register the shim statically; neither mode searches the current directory or a bare library name. Development loading also rejects ambient DYLD/LD search overrides and verifies the JSH1 ABI canary.

History

Interactive jsh writes normal line-oriented shell history to $HISTFILE (default: ~/.jsh_history). Set HISTSIZE and HISTFILESIZE to control the in-memory and saved entry limits.

History recording can be disabled from startup config with the bash-style history option:

# ~/.jshrc
case "$PWD/" in
  "$HOME/mine/obersh/"*) set +o history ;;
esac

For memory-only session history without saving a file, unset HISTFILE, set HISTFILE=, or set HISTFILE=/dev/null.

Layout

*.ss                  shell source modules
jerboa-src/src/       small compatibility modules used by the build
support/              build helpers
test/                 unit, binary, and Oils compatibility tests
bench*.ss             shell benchmark scripts