Skip to content
/ valet Public

An autonomous deployment system which automatically pulls from a GitHub repository. Similar to Vercel.

License

Notifications You must be signed in to change notification settings

98ping/valet

Repository files navigation

🚄 Valet

A Vercel-like deployment system that automatically syncs your GitHub repositories to your own machine

Kotlin License GitHub

FeaturesInstallationConfigurationUsageContributingDemo


✨ Features

🎯 Incremental Updates

Only fetches files that have changed in the latest commits, saving bandwidth and time.

Lightning Fast

Efficiently syncs repositories using GitHub's API with smart caching.

🔄 Auto-Sync

Monitors for changes and deploys automatically in 3 minute intervals.

🛡️ Secure

Supports GitHub token authentication for private repositories.

📦 Easy Setup

Simple JSON configuration with template artifacts.

🌈 Pretty CLI

Colorful console output for better visibility.


🎬 Quick Start

# Download the latest release
wget https://github.com/98ping/valet/releases/latest/download/valet.jar

# Run Valet
java -jar valet.jar

On first run, Valet will create a configuration.json file. Edit it with your repository details and restart.


📦 Installation

Prerequisites

  • Java 21 or higher
  • GitHub Personal Access Token (for private repos)

Building from Source

# Clone the repository
git clone https://github.com/98ping/valet.git
cd valet

# Build with Gradle
./gradlew shadowJar

# Run the application
java -jar build/libs/valet-1.0-SNAPSHOT.jar

⚙️ Configuration

Valet uses a simple JSON configuration file to store artifacts:

{
  "id": "template",
  "location": "/home/Template",
  "owner": "98ping",
  "repo": "Valet",
  "branch": "master",
  "filters": {
    "include": ["src/**/*.kt", "*.md"],
    "exclude": ["*.tmp", "build/"]
  },
  "restartCommand": "./start.sh"
}

Configuration Options

Option Type Description
id String The name of your artifact
owner String Repository owner/organization
repo String Repository name
branch String Branch to track (default: main)
targetDirectory String Local directory to sync files to
filters Map<String, String> Defines what files to include and ignore
restartCommand String What should be ran after the deployment concludes

🎯 Usage

Basic Usage

java -jar valet.jar

🏗️ How It Works

graph.png

  1. Monitor: Valet continuously checks for new commits
  2. Analyze: Identifies added, modified, and removed files
  3. Sync: Downloads only changed files via GitHub API
  4. Deploy: Updates your local directory with the latest changes

🤝 Contributing

We welcome contributions! Here's how you can help:

  1. 🍴 Fork the repository
  2. 🔧 Create a feature branch: git checkout -b feature/amazing-feature
  3. 💾 Commit your changes: git commit -m 'Add amazing feature'
  4. 📤 Push to the branch: git push origin feature/amazing-feature
  5. 🎉 Open a Pull Request

📊 Project Stats

GitHub stars GitHub forks GitHub issues GitHub pull requests


📝 License

This project is licensed under the MIT License - see the LICENSE file for details.


🙏 Acknowledgments


Made with ❤️ by Matrix Studios

Report BugRequest Feature

About

An autonomous deployment system which automatically pulls from a GitHub repository. Similar to Vercel.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages