This is a practical exercise designed to give you a feel for the kind of problems we solve at JetKVM. Pick one or more challenges, implement your solution in the relevant repos, and send us your patch sets. Your submission should demonstrate not only that it works, but also clean code, thoughtful design, and a good developer experience.
Important
Deadline for this job challenge is 23 September, 2025 - 23:59 UTC.
- Clone the repos you need for the challenge (e.g. kvm, api). Keep private until deadline.
- Implement challenges using the pre-defined challenge branch name
Once you're ready with all the challenges you wanted to implement:
- Create a patchset for each challenge & repo
git fetch --all --tags
git format-patch \
--base=challenge-base \
challenge-base...<your-challenge-branch> \
-o ~/jetkvm-challenges/<your-challenge-branch>/<repo-name>
- Package your work
Zip the whole ~/jetkvm-challenges
directory. It should looks something like:
jetkvm-challenges/
automated-e2e-test-suite/
kvm/
0001-add-tests.patch
api/
0001-new-endpoint.patch
h265/
kvm/
0001-add-h265-support.patch
- Email us the challenges
- To:
jobs [at] jetkvm [dot] com
- Subject:
JetKVM Engineering Job Challenge
- Body: Anything you’d like us to know about your solution (e.g. notes, assumptions, trade-offs).
- Attachment: One zip of the
jetkvm-challenges
directory with all the folders &.patch
files in it.
- To:
H.265 Support
Challenge branch name: h265
- Add H.265 support with a settings option for Auto/H.264/H.265
- Migrate Video Settings from React state to `react-hook-form`
Static IPv6
Challenge branch name: static-ipv6
- Add static IPv6 support with a toggle to switch from SLAAC
- Migrate Network Settings from React state to `react-hook-form`
Device Access Sharing
Challenge branch name: access-sharing
- Add support for sharing remote control access via link, with expiration date options
Connection Troubleshooting
Challenge branch name: connection-troubleshooting
- Improve the end-user experience for connection troubleshooting
- Browser permissions
- Operating system settings
- WebSocket connection
- WebRTC connection
- Video encoder issues
Please checkout https://github.com/jetkvm/kvm/issues/84 and https://jetkvm.com/docs/getting-started/troubleshooting#loading-video-stream-issue for more details
Automated E2E Test Suite
Challenge branch name: automated-e2e-test-suite
- Add Playwright-based tests to catch regressions in input, video, and connection
- Verify WebSocket, ICE, WebRTC connection states and fake video track presence
- Ensure common setting changes also retain input, video and connection
- Add GitHub Action to run these tests on every PR
Multi-Session Support
Challenge branch name: multi-session-support
- Allow multiple concurrent connections to the same KVM
- Add control arbitration: define how keyboard/mouse input is handled when multiple sessions are active
After the deadline on 23 September, 2025 (23:59 UTC), we’ll begin reviewing all submissions. To keep the process fair, we don’t provide feedback before the deadline - this way, every challenge is considered under the same conditions.
Reviews are done by our team, not by an automated system. We look carefully at each submission, paying attention both to the solution itself and to how it was approached.
Once the review is complete, we’ll get back to you directly with the outcome - whether or not you move forward.
You are welcome to use AI tools while working on this challenge. This reflects how we work day-to-day at JetKVM: AI can speed things up, but it’s not a substitute for thoughtful engineering. What matters is that you fully understand the code you submit and could explain it if asked.