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 | bashOr download and run the script manually:
wget https://raw.githubusercontent.com/JuliaComputing/jh/main/install.sh chmod +x install.sh ./install.shOptions:
--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/binDownload 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 yourinstallto 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 pushNote: 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