Code in the browser, ship with one command
Hub gives your team RStudio, VS Code and JupyterLab in the browser, with Claude Code already set up. When a project is ready, one command turns it into an app, a report, an API or a pipeline that colleagues open with their company login.
Built on open source
- ShinyProxy
- Kubernetes
- BuildKit
For teams that work in R and Python
Hub is meant for teams whose code, data and apps have to stay inside the company: a data-science group in a mid-sized business, a research unit, or a consultancy working for several clients. Analysts and data scientists work in it, and either your IT department or I run it.
- One login: everyone signs in through your identity provider, and its groups decide who is an admin and who sees which app
- One home directory: persistent, and shared by all three IDEs
- One command to publish: no ticket to IT and no hand-written Dockerfile
- No per-user pricing: hosted or on your own infrastructure
Open source all the way down
ShinyProxy and the ShinyProxy Operator run the sessions and the apps on Kubernetes. k3s, Caddy, BuildKit, a container registry, Redis, Velero, Grafana, Loki and Prometheus do the rest. No proprietary runtime sits between your team and its code.
What your team does not need to know
Docker, Kubernetes or YAML. A deploy produces a standard container image, and projects stay ordinary R or Python projects.
What's in it
The documentation has the details. This is the short version.
Three IDEs, one home directory
RStudio Server, VS Code and JupyterLab start from the same page and share each user's home directory. You pick a size per session, and you can run several sessions of one IDE side by side.
Coding agents that know the platform
Claude Code runs in every IDE, and RStudio has an assistant of its own as well. Both get the same instructions, rules and skills from the platform, so they know the project layout, know how a deploy works and can fix a failed build. AI can also be switched off entirely.
Deployment from the IDE
hub deploy builds the project in the current directory, pushes the image and
registers it. That covers Shiny for R and Python, Quarto and R Markdown, Plumber and FastAPI
APIs, MCP servers and scheduled targets pipelines. hub rollback
brings back any of the last ten versions.
Your identity provider
OpenID Connect with Keycloak, Microsoft Entra ID, Okta, Auth0 or Cognito, plus LDAP, Active Directory and SAML. With OIDC, the APIs accept the provider's tokens too, so scripts and other services call them with a real identity.
Your packages, your network
The R and Python package sets each live in a text file, pinned to a snapshot date. Private mirrors, your company's CA certificates and extra system packages are part of the configuration, and the image layer that holds them is built inside your network.
Versioned releases
Each release is a single versioned artifact. install.sh upgrade moves the hub to
a new version and install.sh rollback takes it back to the previous one. Daily
backups to an S3 bucket and monitoring with alert mail are one installer option each.
How a deploy works
From an empty project to an app your colleagues can open.
Create a project
In RStudio or VS Code on the hub, with hub::new_app(), through the project
wizard in RStudio, or by asking the agent.
Work as usual
renv or uv records the dependencies. The agent knows the project
layout and the hub's commands.
Publish
hub deploy builds an image with your packages and their system libraries,
pushes it to the hub's registry and registers the app.
First build a few minutes, a redeploy with unchanged packages seconds
Colleagues open the app
With their company login. Which groups get access is set in the project's
hub.yaml.
$ hub deploy
hub: packing /home/rstudio/sales as 'sales'
hub: building sales as registry.hub.acme.example/apps/sales:latest (shiny; mode: renv, Dockerfile: generated, renv.lock: yes)
hub: system packages: libcurl4-openssl-dev libssl-dev
...
hub: pushed registry.hub.acme.example/apps/sales:latest (sha256:3f9c1a7e2b04)
hub: app registered; the apps server restarts (about a minute)
hub: https://apps.hub.acme.example/app/sales
Hosted, or on your side
Both are the same software with the same installer.
Hosted by me
- A dedicated server per client, not shared with anyone
- I install, upgrade and monitor it
- Your team signs in through your identity provider
- The configuration is yours and moves with you if you later run the hub yourself
On your infrastructure
- A fresh Ubuntu server is set up with one command
- For an existing Kubernetes cluster, the same installer runs from a jump host
- The platform images come from my registry, with your account
- The layer with your packages and certificates is built on your side
Common questions about Hub
Yes. A trial runs on any spare Ubuntu 24.04 server and needs no DNS: the installer gives it a name under sslip.io, with real certificates. All you need from me is an account. Since the host name does not belong to you, keep customer data off it.
Pricing is not per user. It depends on whether I run the hub for you or you install it yourself, and you get a quote once I know what you have in mind.
I delete your registry account. Your hub keeps running on the images it already has, and
hub deploy keeps working. It gets no further releases, though, and the layer
with your packages and certificates can no longer be rebuilt, because its build starts
from my platform images. There is no licence server, no phone-home and no seat count.
Claude Code runs on your users' own Anthropic accounts, the RStudio assistant on their own login or a model provider's API key. If you prefer, I set up a different agent, including one that uses a model you host, or AI stays off altogether. The documentation has the details.
With my hosting at apps.linnerprogramming.com, I run applications I have built for you. With Hub, your team builds and publishes them itself. Under the hood, both run on ShinyProxy.
Try Hub
The documentation at docs.hub.linnerprogramming.com covers installation, configuration and deployment in detail. For a trial account, a hosted hub or a quote for your own infrastructure, send me a few lines about what you have in mind.