Jupiter is secure, agentic IDE (model agnostic) designed to run on a server and remain available from any browser - laptop, phone, whatever happens to be nearby. A perfect handoff enables seamless continuity of work.
PS - the mobile interface looks like this.
- Self-host friendly: Self host it, and connect from a browser from anywhere, using a VPN like Tailscale.
- Model Agnostic: Not being tied to a specific model provider allows you to mix and match models, including falling back seamlessly when a model provider experiences outages.
- Secure: A rogue agent cannot access your env, and any other credentials from your env (network sandbox coming soon!).
Pull the latest published image:
docker pull judepereira/jupiter:latestGenerate an encryption key:
export JUPITER_ENCRYPTION_KEY="$(openssl rand -base64 32)"Important: Don't lose or regenerate your encryption key! All data is encrypted with this key, to prevent a rogue agent from reading the database file and searching for credentials.
Then, run the docker container:
mkdir -p "$HOME/.jupiter"
docker run --rm \
-p 7272:7272 \
-e JUPITER_ENCRYPTION_KEY="$JUPITER_ENCRYPTION_KEY" \
-v "$HOME/.jupiter:/home/jupiter/.jupiter" \
-v "$HOME/developer:/home/jupiter/developer" \ # Replace developer with the dir where all your projects are checked out
judepereira/jupiter:latestOpen http://localhost:7272, choose Open Project, and select a repository under /home/jupiter/developer.
To update Jupiter, pull the latest image and restart the container with the same encryption key, state mount, and source mount:
docker pull judepereira/jupiter:latestImages are available as latest for the current main branch and as immutable release tags in the YYYY.MM.DD.N format.
Use a release tag when you need a fixed version.
Important: Use your own network sandbox for now. A built-in one will be shipped soon!
It is possible to change the username from jupiter to your own username (makes it easier to jump into worktrees from
an external IDE), and to configure system init and user init scripts (preinstall software required). See
Running with Docker.
Open Settings → Model Providers to connect an OpenAI subscription or Claude. OpenAI can also use OPENAI_API_KEY.
See Models and Providers for connection and
model-selection details.
It's strongly recommended to set JUPITER_HTTP_AUTH_PASSWORD, in order to prevent a rogue agent from accessing Jupiter
itself. This is also useful when exposing Jupiter to the public facing internet (although this is NOT recommended).
Always use a private VPN such as Tailscale.
The full documentation lives in the GitHub Wiki. A good place to begin is Getting Started, followed by Workspaces and Git Worktrees and Security Model.
Jupiter is licensed under the MIT License.
Jupiter keeps its state under ~/.jupiter, including jupiter.sqlite.
Back up the database and encryption key separately. You need both to recover encrypted state.
Found a bug? Usability issue? Create an issue. If you'd like to add a new feature, please create an issue first, outlining your feature, and it's proposed implementation plan.
Made with ❤️ in Amsterdam
