-
Notifications
You must be signed in to change notification settings - Fork 0
Installation
Statistikles is a pure Julia package — the julia executable is the runtime,
so there is no separate binary to compile. This page covers every supported way
to get it running: native Julia, the just task runner, an OCI container, and a
dev container. Every command below is copied from the repository's
Justfile, Containerfile, .devcontainer/, .tool-versions, and README.adoc.
Once installed, head to Usage-and-Examples to run it.
| Component | Version / detail | Source |
|---|---|---|
| Julia | 1.10+ (pinned toolchain is 1.10.11) |
.tool-versions, Project.toml [compat]
|
| just | 1.36.0 (optional task runner) | .tool-versions |
| LM Studio (or any OpenAI-compatible endpoint) | Optional — at http://localhost:1234/v1, model with function-calling |
README.adoc, src/tools/lmstudio.jl
|
Julia package dependencies are pinned in the committed Manifest.toml and
declared in Project.toml:
[deps]
CSV, DataFrames, Dates, Distributions, HTTP, JSON3,
LinearAlgebra, Printf, Random, Statistics, StatsBase, UUIDsLM Studio is optional. Without a reachable endpoint, Statistikles prints a "Cannot connect…" notice and runs its offline demo instead (see Usage-and-Examples).
The Justfile recipes run under bash (set shell := ["bash", "-uc"]), so on
Windows you need a POSIX shell — Git Bash or WSL. Linux and macOS need
nothing beyond Julia and (optionally) just.
The canonical two commands from README.adoc:
cd statistikles
julia --project=. -e 'using Pkg; Pkg.instantiate()'
julia --project=. -e 'using Statistikles; main()'Pkg.instantiate() resolves the committed Manifest.toml exactly (no
re-resolution) into the project environment. Nothing is installed outside the
cloned directory and your Julia depot (~/.julia).
To clone first:
git clone https://github.com/hyperpolymath/statistikles.git
cd statistiklesIf you have just installed, the same steps are wrapped in recipes. Run just
(or just --list) to see them all. The install-relevant ones:
| Recipe | What it does | Underlying command |
|---|---|---|
just setup |
One-time dependency install (checks Julia is present first) | julia --project=. -e 'using Pkg; Pkg.instantiate()' |
just deps |
Alias of setup
|
(depends on setup) |
just build |
Precompile the environment (runs setup first) |
julia --project=. -e 'using Pkg; Pkg.precompile()' |
just run |
Run the assistant (runs build first) |
julia --project=. -e 'using Statistikles; main()' |
just test |
Run the full test suite | julia --project=. test/runtests.jl |
Typical first run:
git clone https://github.com/hyperpolymath/statistikles.git
cd statistikles
just setup # resolve + install dependencies
just run # precompile, then launch main()just setup fails fast with an install hint if julia is not on your PATH.
There is also just doctor (checks required tools + Julia version) and
just heal (attempts common repairs).
No local Julia install is needed — only Podman or Docker. The Containerfile
builds on the official docker.io/library/julia:1.10 image (== Julia 1.10.11,
Debian trixie, matching the pinned Manifest.toml), runs as a non-root user,
and instantiates + precompiles the package at build time.
git clone https://github.com/hyperpolymath/statistikles.git
cd statistikles
podman build -t statistikles:latest -f Containerfile .
podman run --rm -it statistikles:latestdocker works identically in place of podman. Key facts from the
Containerfile:
-
Non-root runtime. A
statistiklesuser (uid 1000) owns/app; the depot lives at/home/statistikles/.julia. -
Entry point is
julia --project=/app -e 'using Statistikles; main()'. -
No LLM in the container by default. With no endpoint reachable,
main()prints "Cannot connect…", runs the offlinerun_examples()demo, and exits 0 — it does not hang waiting for input. -
Reaching a host-side LM Studio: run with
--network=hostso the container can reach LM Studio at the defaulthttp://localhost:1234/v1:podman run --rm -it --network=host statistikles:latest
-
Changing the endpoint URL: setting
STATISTIKLES_LM_URLatruntime has no effect —Pkg.precompile()during the build already baked the default URL into the precompile cache. To change it, setSTATISTIKLES_LM_URLas a build-timeENVbefore theRUN … Pkg.precompile()line and rebuild.
Container image releases are tracked separately from the Julia registry release flow — see Release-Process.
A .devcontainer/ is provided for VS Code Dev Containers, GitHub Codespaces, and
Gitpod. Its devcontainer.json layers dev-container features onto the image:
git-
just(ghcr.io/jdx/devcontainer-features/just) -
nickel(ghcr.io/nickel-lang/devcontainer-feature) - Julia 1.10 (
ghcr.io/julialang/devcontainer-features/julia, channel1.10)
On create it runs just setup ("postCreateCommand": "just setup") as the
nonroot user, and pre-installs Julia/TOML/AsciiDoc VS Code extensions.
| Environment | How to launch |
|---|---|
| VS Code (local) | Install the Dev Containers extension, set dev.containers.dockerPath to podman, then Reopen in Container. |
| GitHub Codespaces | Code → Codespaces → New codespace — builds automatically. |
| Gitpod | Prefix the repo URL with https://gitpod.io/#. |
The dev-container base image (.devcontainer/Containerfile) is Chainguard's
cgr.dev/chainguard/wolfi-base, distinct from the runtime Containerfile in
Option 3.
If you use asdf / mise, the
.tool-versions file pins the exact toolchain:
just 1.36.0
julia 1.10.11
# Confirm the package loads (this is also an AutoMerge requirement for release):
julia --project=. -e 'using Statistikles'
# Run the offline examples — every number is computed by Julia, no LLM needed:
julia --project=. -e 'using Statistikles; run_examples()'
# Or run the full test suite:
just test # == julia --project=. test/runtests.jl-
Usage-and-Examples — running
main(),run_examples(), and connecting LM Studio - Release-Process — how tagged releases are cut and published
Overview
Using
Development
Project