A Vercel-like deployment system that automatically syncs your GitHub repositories to your own machine
Features • Installation • Configuration • Usage • Contributing • Demo
|
Only fetches files that have changed in the latest commits, saving bandwidth and time. |
Efficiently syncs repositories using GitHub's API with smart caching. |
|
Monitors for changes and deploys automatically in 3 minute intervals. |
Supports GitHub token authentication for private repositories. |
|
Simple JSON configuration with template artifacts. |
Colorful console output for better visibility. |
# Download the latest release
wget https://github.com/98ping/valet/releases/latest/download/valet.jar
# Run Valet
java -jar valet.jarOn first run, Valet will create a configuration.json file. Edit it with your repository details and restart.
- Java 21 or higher
- GitHub Personal Access Token (for private repos)
# 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.jarValet 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"
}| 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 |
java -jar valet.jar- Monitor: Valet continuously checks for new commits
- Analyze: Identifies added, modified, and removed files
- Sync: Downloads only changed files via GitHub API
- Deploy: Updates your local directory with the latest changes
We welcome contributions! Here's how you can help:
- 🍴 Fork the repository
- 🔧 Create a feature branch:
git checkout -b feature/amazing-feature - 💾 Commit your changes:
git commit -m 'Add amazing feature' - 📤 Push to the branch:
git push origin feature/amazing-feature - 🎉 Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with Kotlin
- Powered by GitHub API
- Inspired by Vercel
Made with ❤️ by Matrix Studios
