A command-line interface for interacting with JuliaHub, a platform for Julia computing that provides dataset management, job execution, project management, Git integration, and package hosting capabilities.
- Authentication: OAuth2 device flow authentication with JWT token handling
- Dataset Management: List, download, upload, and check status of datasets
- Project Management: List and filter projects using GraphQL API
- Git Integration: Clone, push, fetch, and pull with automatic JuliaHub authentication
- Julia Integration: Install Julia and run with JuliaHub package server configuration
- User Management: Display user information and profile details
Install the latest release automatically:
curl -sSfL https://raw.githubusercontent.com/JuliaComputing/jh/main/install.sh | bash
Or download and run the script manually:
wget https://raw.githubusercontent.com/JuliaComputing/jh/main/install.sh
chmod +x install.sh
./install.sh
Options:
--install-dir DIR
: Custom installation directory (default:$HOME/.local/bin
)--help
: Show help message
Custom installation directory example:
curl -sSfL https://raw.githubusercontent.com/JuliaComputing/jh/main/install.sh | bash -s -- --install-dir /usr/local/bin
Download the latest release from the GitHub releases page.
Available for:
- Linux (amd64, arm64)
- macOS (amd64, arm64)
- Windows (amd64, arm64)
git clone https://github.com/JuliaComputing/jh
cd jh
go build -o jh .
-
Authenticate with JuliaHub:
jh auth login
-
List your datasets:
jh dataset list
-
List your projects:
jh project list
-
Clone a project:
jh clone username/project-name
-
Setup Git credential helper (recommended for seamless Git operations):
jh git-credential setup # Now you can use standard Git commands with JuliaHub repositories git clone https://juliahub.com/git/projects/uuid.git
jh auth login
- Login to JuliaHub using OAuth2 device flowjh auth login -s yourinstall
to login to yourinstall.juliahub.com
jh auth refresh
- Refresh authentication tokenjh auth status
- Show authentication statusjh auth env
- Print environment variables for authentication
jh dataset list
- List all accessible datasetsjh dataset download <dataset-id> [version] [local-path]
- Download a datasetjh dataset upload [dataset-id] <file-path>
- Upload a datasetjh dataset status <dataset-id> [version]
- Show dataset status
jh project list
- List all accessible projectsjh project list --user
- List only your projectsjh project list --user <username>
- List specific user's projects
jh git-credential setup
- Configure Git to use JuliaHub authentication- After setup, use standard Git commands:
git clone
,git push
,git pull
jh clone <username/project> [local-path]
- Clone a JuliaHub project by username/project namejh push [git-args...]
- Push with authenticationjh fetch [git-args...]
- Fetch with authenticationjh pull [git-args...]
- Pull with authentication
jh julia install
- Install Julia programming languagejh run
- Start Julia with JuliaHub configuration
jh user info
- Show detailed user information
Configuration is stored in ~/.juliahub
with 0600 permissions. The file contains:
- Server configuration
- Authentication tokens (access, refresh, ID tokens)
- User information (name, email)
Default server: juliahub.com
Currently, you will only be logged in one server at a time.
# List datasets
jh dataset list
# Download latest version of a dataset
jh dataset download my-dataset
# Download specific version
jh dataset download username/dataset-name v2
# Upload new dataset
jh dataset upload --new ./my-data.tar.gz
# Upload new version to existing dataset
jh dataset upload my-dataset ./updated-data.tar.gz
# List all projects you have access to
jh project list
# List only your projects
jh project list --user
# List projects by specific user
jh project list --user alice
# Option 1: Use JuliaHub CLI wrapper commands (resolves uuids for you)
jh clone alice/my-project
cd my-project
# Make changes...
jh push
# Option 2: Use Git credential helper (recommended)
jh git-credential setup
git clone https://juliahub.com/git/projects/uuid
cd my-project
# Make changes...
git push
Note: It's recommended to use the git-credential helper, but you can still
clone using jh clone username/project-name
; otherwise you need the project's uuid
- Built with Go using the Cobra CLI framework
- Authentication: OAuth2 device flow with JWT token management
- APIs: REST API for datasets, GraphQL API for projects and user info
- Git Integration: Seamless authentication via HTTP headers or credential helper
- Cross-platform: Supports Windows, macOS, and Linux
# Run tests
go test ./...
# Build
go build -o jh .
# Code quality checks
go fmt ./...
go vet ./...
- Fork the repository
- Create a feature branch
- Make changes with tests
- Run
go fmt ./...
andgo vet ./...
- Submit a pull request
To create a new release:
-
Create and push a version tag:
git tag v1.0.0 git push origin v1.0.0
-
GitHub Actions will automatically:
- Build binaries for all platforms
- Create a GitHub release with the binaries
- Include version information in the binaries
-
Version information is embedded in binaries:
jh --version # Shows version, commit, and build date