Skip to content

Installation

Jonathan D.A. Jewell edited this page Jul 11, 2026 · 1 revision

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.

Requirements

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, UUIDs

LM Studio is optional. Without a reachable endpoint, Statistikles prints a "Cannot connect…" notice and runs its offline demo instead (see Usage-and-Examples).

Platform notes

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.

Option 1 — Native Julia

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 statistikles

Option 2 — The just recipes

If 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).

Option 3 — Container (Podman or Docker)

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:latest

docker works identically in place of podman. Key facts from the Containerfile:

  • Non-root runtime. A statistikles user (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 offline run_examples() demo, and exits 0 — it does not hang waiting for input.

  • Reaching a host-side LM Studio: run with --network=host so the container can reach LM Studio at the default http://localhost:1234/v1:

    podman run --rm -it --network=host statistikles:latest
  • Changing the endpoint URL: setting STATISTIKLES_LM_URL at run time has no effectPkg.precompile() during the build already baked the default URL into the precompile cache. To change it, set STATISTIKLES_LM_URL as a build-time ENV before the RUN … Pkg.precompile() line and rebuild.

Container image releases are tracked separately from the Julia registry release flow — see Release-Process.

Option 4 — Dev Container

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, channel 1.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.

Toolchain pinning (.tool-versions)

If you use asdf / mise, the .tool-versions file pins the exact toolchain:

just 1.36.0
julia 1.10.11

Verifying the install

# 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

See also

Clone this wiki locally