Skip to content
ndexr · open source

The ndexr platform, open source

An open data-science platform: interactive R sessions on shared compute, governed packages, and published apps - built from Gentoo Prefix, EasyBuild, CVMFS, and Open OnDemand , run in production, and handed over here as source. This page is the way in: the address to keep, the archive that contains every layer, and the staged path for standing it up on your own infrastructure - independently of us.

Apache-2.0 · ~1,900 files · the running source · updated 2026-08-10 · No account, no license, no contact form
The address
https://opensource.ndexr.io
This page is the canonical way into the ndexr source. The archive below downloads from it, unpacks to ~/ndexr , and carries its own README, install guide, runbooks, and license - nothing after the download requires this site, or us.
The archive
The platform source, as one archive that unpacks to ~/ndexr : the portal and its apps, the package pipeline, the build recipes and both RStudio fixes, the CVMFS and S3 scripts, the edge tier, the schema, the deploy CLI, and the runbooks. Apache-2.0; the LICENSE is at the archive root.
Download the platform (.zip)
Rebuilding it · three ways in

The path in §5 is nine stages, but almost nobody needs all nine, and the first useful one costs nothing. Pick where you want to stop and the pathway below marks the stages that are yours and dims the rest. You can change it at any point, and the page remembers which checkpoints you have passed.

Every route starts at stage 0, and every stage ends in one command with an expected output - so at each step you know whether you have actually passed, rather than finding out two stages later.

1 What ndexr is

ndexr is a data-science platform organized as a multi-domain model : one Shiny application serving many subdomains, where each capability - the session portal, the package repository, the build recipes, the edge tier, this page - is a directory that is at once its own git repository, its own live site, and the code that stands its subject up. Underneath the sites sits a software distribution stack: a Gentoo Prefix userland that borrows only the kernel from the host, EasyBuild recipes that make every build re-runnable, and a signed CVMFS tree with its origin in S3 that delivers the result read-only to any machine with a client.

The combination does the three jobs teams usually buy the commercial Posit suite for - launch IDE sessions on shared compute, serve curated packages, host what gets built - plus one layer nobody sells: an agent side panel that sits beside whichever site you are changing. Every layer is running in production, and every layer is in the archive above. Sections 2 and 3 give the short version of the two arguments; each ends with a pointer to the long-form dossier it condenses.

2 The model: how software reaches every machine

Installing scientific software is not hard; installing it once per machine, forever is. Enterprise Linux is old on purpose, so the software researchers need will not build against the host - and containers do not settle the question either, because a container answers “how do I ship one application”, not “how does a whole evolving stack reach every machine I will ever touch”.

The architecture that does settle it has two halves. Delivery : CernVM-FS (CVMFS), built at CERN for the LHC computing grid, presents a read-only tree under /cvmfs that is streamed on demand, cached locally, and covered by one cryptographic signature - a machine mounts it and has the entire stack without installing any of it. Content : a compatibility layer - a complete userland, own glibc and loader, that is deliberately not the host's - with the scientific stack built on top from EasyBuild recipes and made choosable by Lmod.

None of this is ours, and that is the point. Two national programmes run exactly this four-layer architecture in production: the Compute Canada / Digital Research Alliance stack, in service the longest, and EESSI, the same design rebuilt for the machines that did not exist in 2017. ndexr is a third, small, fully-published implementation of the same model - which means adopting it does not tie you to us any more than it ties you to CERN.

what.ndexr.io
How a scientific software stack reaches every machine
The full argument in sixteen sections - CVMFS internals, integrity, the four distribution tiers, performance against parallel filesystems, both national stacks, what to stand up and what the model does not solve. Every non-obvious claim carries a numbered citation to a primary source.

3 The platform: three jobs, no license required

Strip the branding and a commercial Posit deployment does three jobs: Workbench brokers IDE sessions on shared compute, Package Manager serves curated prebuilt packages, Connect hosts what gets built. Each job is real and each deserves a serious answer - and each is an infrastructure pattern, not a product , with an open, battle-tested implementation.

The map - each job, and what does it here
The job The commercial answer The open answer, in production here
Launch IDE sessions on shared compute Posit Workbench Open OnDemand - the portal pattern academic supercomputing runs at scale
Serve curated, prebuilt packages Posit Package Manager repo.ndexr.io - validated binaries, served per architecture, baked into R as the default
The IDE itself RStudio Pro open-source RStudio Server - fixed by us to run on current R, ahead of the vendor's own release
Host published apps Posit Connect the multi-domain site you are reading right now - one app, many domains
Get all four running a procurement cycle and a license the archive on this page - unzip, follow INSTALL.md, deploy

The open foundation is the stricter one, not the cheaper one: own userland instead of the vendor's binary, every build a reviewable recipe instead of an appliance, a signed and versioned software tree instead of a mutable install. The RStudio in the middle of the map is the piece that makes the argument honest - the vendor's build did not run on current R, and two published fixes (not patches: the software did not work) put it ahead of the vendor's own release. Those fixes are in the archive as EasyBuild recipes anyone can re-run.

ymnnpc.ndexr.io
You Might Not Need Posit Connect
The full dossier, bottom-up in eleven sections - Gentoo Prefix, EasyBuild and both RStudio fixes, CVMFS from S3, Open OnDemand, the package repository, and the agent side panel - with the slide deck read in place and a narrated audio walkthrough.

4 What is in the archive

One archive, staged live from the running repository at download time: roughly 1,900 files across the platform's infrastructure domains, in the real ~/ndexr hierarchy. It contains the portal and its apps, the package pipeline, the build recipes and both RStudio fixes, the CVMFS and S3 scripts, the edge tier, the database schema, the deploy CLI, and the runbooks - plus a generated README.md , INSTALL.md , CLAUDE-DEPLOY.md (addressed to an agent rather than a person), and a MANIFEST.txt . Secrets are excluded by path rules and a per-file content scan; anything filtered is listed in EXCLUDED.txt so the omissions are visible too.

Download the platform (.zip)
Apache-2.0. The LICENSE is at the archive root, and the build refuses to run without it.

5 The pathway: standing it up independently

This is the most open route we can offer into running ndexr on your own platform: everything below works from the archive alone, on infrastructure you control, with nothing gated on us. Stage 1 does not even need a server - a laptop with a CVMFS client mounts the validated software tree in minutes, having compiled nothing - and every later stage ends in one checkpoint command with an expected output, so you always know whether you have actually passed.

Section references inside the stages (§2, §8, §10.1) point into the dossier at ymnnpc.ndexr.io , which this path was written alongside.

Your pathway
0 of 9 checkpoints passed
No route chosen - all nine stages shown.

There is no installer here, and that is not an omission. An installer assumes a finished product with a fixed shape, which it copies onto your machine. This is not that. What is being handed over is a way of working - so the honest form is a guided path rather than a curl | sh . Nine stages, each one bringing a repository from the archive to life inside your own environment, and each ending in one checkpoint command with an expected output . A stage you have not passed is a stage you cannot skip, because the next one depends on it and will fail later and more confusingly than it would have failed here.

The assumption throughout is that you and an agent do this together (§10.1). CLAUDE-DEPLOY.md in the archive is addressed to an agent rather than to a person, which is why the steps below are described rather than scripted: the runbook is the script, the agent reads it, and you supply the judgement and the credentials.

The order is the dossier's own argument pointed at your machine. Stage 1 is mount, not install - a laptop with a CVMFS client gets a complete validated R toolchain in minutes, having compiled nothing and created no cloud resources. A reader who does only stage 1 has still watched the thesis work on their own hardware. Everything after it is about becoming a publisher instead of a consumer, and that is the point where you need a machine of your own.

Assumed, for now: one EC2 host and an AWS account. Nothing in the design requires either - the software tree does not care whose kernel it is mounted on - but the runbooks are written against that pair, and a guide that hedges every sentence for four clouds teaches none of them.
0

Get the code

Start here
runs on your laptop goes live: ~/ndexr

Unzip the archive into your home directory, or clone the repository. Either way it must land at ~/ndexr — every path in every runbook assumes that, and nothing later is worth debugging against a different root.

Checkpoint
test -d ~/ndexr/src/domains && test -f ~/ndexr/LICENSE && echo ready
must show → ready

You have the source and a way to manage it. Nothing runs yet.

1

Mount, do not install

Requires Stage 0
runs on your laptop goes live: cvmfs.ndexr.io (client side)

Install the CVMFS client from your distribution, point it at the software repository, and mount. This works on a laptop. You are not building anything and you are not creating any cloud resources — you are attaching to a signed, read-only software tree that already exists. Then load R from it.

Checkpoint
ls /cvmfs/software.ndexr.io/ && module load R && R --version
must show → aarch64-linux-gnu/ and x86_64-linux-gnu/, then a current R

This is the whole thesis, proven on your own machine in minutes: a complete validated toolchain, compiled by nobody local, installed nowhere. If you stop here you have still gained something real.

2

Get credentials worth trusting

Requires Stage 1
runs on your laptop goes live: aws.ndexr.io

Read aws.ndexr.io — it is the cloud surface for the whole suite, and it is where instances, keys, security groups and DNS come from. Then create a role scoped to this job: the bucket prefix that will hold your tree, the hosted zone for the subdomain you are standing up, and nothing else. Configure the AWS CLI with it. Do not use console-grade keys, and do not hand console-grade keys to an agent.

Checkpoint
aws sts get-caller-identity
must show → the scoped role you just made — not your admin identity

You can now create things. The negative check matters as much as the positive one: the same credentials should fail to list buckets that are not yours to touch.

3

One server, turned on

Requires Stage 2
goes live: the platform tier + your first domain

Launch a single EC2 host and point a wildcard DNS record at it. Build the CLI, write your own .env, and deploy. INSTALL.md in the archive is the step-by-step; this stage is done when the platform answers on your own domain, serving your own first page.

Checkpoint
curl -sI https://<your-first-domain> | head -1
must show → HTTP/2 200

You are hosting. Everything above this line was consumption; everything below it requires a machine you control.

4

The build layer

Requires Stage 3
goes live: eb.ndexr.io + prefix.ndexr.io

Now, and not before, build something with EasyBuild. A build needs real cores and somewhere to put the result, which is why it comes after the server rather than before it. Start with one recipe from the easyconfigs in the archive.

Checkpoint
readelf -l $(which R) | grep interpreter
must show → a loader path inside the tree, not /lib64

You can produce the stack rather than only mount it. The checkpoint is the one from the dossier: if the interpreter is still the host's, the build did not do what you think it did.

5

Publish your own tree

Requires Stage 4
goes live: cvmfs.ndexr.io (server side)

Point CVMFS at your own S3 bucket as origin, and publish what you built as one transaction. Then mount it from a second machine — your laptop from stage 1 will do.

Checkpoint
ls /cvmfs/<your-repo>/
must show → on a machine that built nothing: what you published

You have crossed from consumer to publisher. This is the point at which adding a machine stops being a software problem.

6

The package layer

Requires Stage 5
goes live: repo.ndexr.io

Stand up the internal repository and bake its address into your R build, so every session resolves packages through one door. This needs the build layer, because the binaries it serves are built by it, for the exact toolchain asking.

Checkpoint
Rscript -e 'install.packages("jsonlite"); cat(getOption("repos")[[1]])'
must show → your own repository URL, and a binary that arrives in seconds

Governed packages: qualify once, and everyone gets the qualified build.

7

Sessions in the browser

Requires Stages 3 and 5
goes live: ood.ndexr.io

Deploy the portal and its launch forms. It needs a server to run on and a tree to serve the IDE from, which is why it is last of the capability stages rather than first — it is the visible part, but it is the part that depends on everything else.

Checkpoint
open the portal, pick R and cores, click Launch
must show → an IDE session in the browser, running from the mounted tree

Your users have what the commercial suite is bought for.

8

Identity, and who may do what

Requires Stage 7
goes live: sssd.ndexr.io + the auth tier

Single sign-on, home directories, and the mapping from a person to a POSIX user on the compute side. Sketched here rather than specified: this is the stage that depends most on your existing organisation, and the least on anything in this archive.

Checkpoint
sign in as a second, non-admin person
must show → their own home directory, their own session, no shared account

The platform belongs to an organisation rather than to you.

Where this ends

Not at “installed”. At the point where your environment has the same shape ours does: every capability one directory that is at once a repository, a live site, and the code that stands its subject up (§2), with an agent panel beside whichever one you are changing (§8). The stages above are how the repositories get there; the workflow is what they add up to.

Which is also why the checkpoints are commands rather than screenshots. At the end of this you are not running someone else's appliance - you are operating a platform whose every layer you can rebuild, and the checks are the same ones we run.

6 License and provenance

The platform source is licensed Apache-2.0 . The license text ships at the root of the archive, the generated README restates it, and the archive build hard-fails if the file is absent - it cannot ship unlicensed.

Provenance for every claim on this page lives in the two dossiers it condenses: what.ndexr.io for the distribution model, with numbered citations to primary sources, and ymnnpc.ndexr.io for the platform itself, whose archive is the same one served here. The pages are kept because an argument for open infrastructure should be checkable - and the archive is included because the argument is not checkable without it.