Contribute to Harbor!
Harbor is what it is thanks to all of the help of it's contributors and users. Have ideas or improvements? You are welcomed here!
Just code on a repo.
We want to take a moment to reiterate that Harbor isn't a company. There is no CEO or paid development team. No boss or manager, we have no financial interests or benefit gained. It's an open source player that people work on because they want to. Nobody is paid or obliged to be here. We take the slow route and the quiet one, if this is not your cup of tea we highly suggest you look at any of the other amazing projects in FAQ. We aren't here for customers, ginormous userbases or clout. if you like unglamorous work but fun challenges keep reading.
Harbor is for people who want Harbor. It's that simple. This is a passion project made out of love, with no expectation that anyone should use it. If you want an LLM free project, this is not it. If another app fits you better, use it. There are people putting care into those projects too and they are all really good!
We're not trying to compete with Stremio, Nuvio or the dedicated apps people use for reading and watching. Harbor is just a player/shell for your favorite services including those two. In terms of competition, we refuse to participate in that (lol). Harbor has its own direction, including manga, ebooks and live TV, and room to change the app itself with many more ambitious features that go way out of just being a "Stremio client". Harbor is whatever its users decide it is. If you want something solely for watching content, or reading we've put some other apps worth knowing about in the FAQ.
You don't have to buy into our idea of an app whether thats how it plays things or how it looks. Take your copy in whatever direction makes sense to you. Harbor's code is MIT licensed: you can use, change and share it, including commercially. Check the licenses of any dependencies or artwork you reuse though.
We chose MIT so you can decide what to do with your work. If you spend your time and money building a fork, you can sell it and keep your additions private. Sharing changes back or giving us a public shout-out is welcome, but optional. Keep the MIT copyright and permission notices with copies of the code. Want to build your own better Harbor? Go ahead! The FAQ explains why we chose MIT over GPL.
Contributors review what goes into the public repository. This is just to keep the version people download useable. It doesn't give ANYONE control over your own copy or decisions. What we decide to merge or not merge on the main repo should not stop you from contributing or joining the discord to discuss a implementation.
Harbor has no official Reddit or Twitter/X presence. We do not advertise and forbid the posting of Harbor on communities unsolicited. The Harbor Discord is a community run by its members and not the contributors. We do not provide 24/7 support. For working on the project use the repository's issues and pull requests or join the discord and mention you are contributing.
Any background welcome.
All experience levels are welcome, including people making their first contribution. Your age, race or gender identity doesn't decide if you belong here. We have no political views and we are open minded to all. We will not judge you for doing things at your capacity. We care about the time and love you put into your work.
A clear bug report or a useful documentation really helps other users. So does noticing that a screen is awkward to use. You don't need to write code to help. Anyone can do it!
Using LLMs
You're still the contributor.
You can absolutely use an LLM if it helps you get the work done. We use them ourselves. Yes some people will gasp at that idea, but we don't mind. We know people are busy. These tools can make your spare hours go much further and we aren't going to judge you for using one.
What matters to us is the time, thought and care you put into the result. You need to understand the work you're submitting and be able to stand behind it if you can't then don't submit.
Read the output! Then run the code.
Don't submit something you have not read or tested yourself. An LLM saying the work is done does not make it automatically work. Did you account for edge cases? Did you think of different platforms? How did you architect it? If you can't explain a change, spend more time with it before asking someone else to review it.
Fully autonomous development is a hard no for contributions to Harbor. Agents can assist with tasks, make some edits or wireframing, help you build it out, etc, you can use cursor or claude code or codex or whatever you use but a person needs to direct the work inspect the changes and verify the result. full stop. We will not accept an unattended run as a finished contribution as more often than not the output is subpar visually and in functionality. Would you want to use something made 100% by AI? We use AI a lot and we'd still answer no to that. AI cannot replace human intuition.
Careless output and "vibecoding" does not save time. It passes the bill to someone else, who will spend their evening fixing a change they didn't ask for. Some of us have kids and multiple jobs. Reviewers are volunteering the same way you are. Every change you do will affect other people. Harbor has many layers to it, do not let your AI work without understanding the things going into it. Use /skills, mcps or whatever tools you need.
If an LLM did a large part of the work, say so in the PR. Explain what you reviewed and tested and explain anything you still aren't sure about. You don't need to paste your chat messages or pretend you worked without help. We don't judge, just don't pass it off as 100% hand built bespoke code everyone at this point knows what LLM output looks like. Please refrain from using Em-dashes and littering the codebase with //comments.
You don't have to like LLMs to contribute.
You can write every line yourself. By all means we welcome those that want to put in time whatever that looks like. Heck, we are typing this page out to you ourselves when it coulda saved us many hours just asking claude or chatgpt..
The expectations are the same for everyone. We want to spend our time making Harbor better, and we want people to be honest about how the work was done. We understand if you don't like LLMs, we respect it and agree on many points. But we don't want to gatekeep harbor and they do allow more people to express themselves through development. We are a limited team with limited time we use LLMs and won't tell you otherwise.
-
Does the change belong here?
Look at what's already there... Could you improve an existing feature instead of adding another one? For interface/UI work, check the styling and layout around it. Does the placement make sense? Does it still fit on ultrawide? Will someone else just have to redo this/redesign it? A feature needs a reason to exist where you've put it or genuine intent and thought into it. We are not experts in everything there is still much to do, sometimes its perfectly okay to leave it as "first pass" styling wise, just ensure you double back to finish it. Look for the things to improve before jumping towards the bigger builds unless you know what you are doing and are prepared to spend days or weeks debugging it.
-
Use current docs, and read them yourself.
When an LLM helps with a new crate, module or integration give it the documentation for the version of whatever library or project you are trying to implement. Use Context7 or another current documentation service for the newest docs. Then open the project's docs yourself and check the relevant API and licenses (if applicable). A context service is useful; but it isn't a substitute for reading! We have fallen for the trap in the past of allowing AI to "fetch api docs" remember agents have context limits and the weights can hallucinate. Before integrating something read the docs.
-
Try it the way someone will use it. A.k.a try to break things!
Build and run your change. Follow any checks from the repo, look for any obvious regressions. Try for edge/failure cases. For UI work, check different window sizes and keyboard use. Tell reviewers and fellow contributors which platforms you actually tested and which you couldn't it helps a lot. This is the time for you to break it before you hear about it from other people complaining it broke.
-
Make the review manageable.
Keep the change focused and clean. Explain the problem and how you checked the fix or how your LLM did (if applicable). Include screenshots for visual changes and identify any new dependencies. Leave unrelated refactoring or giant jobs for another contribution. A smaller change that works is easier to trust and build on. For quicker merges use the beta-branch instead of the stable or main branches as they are used for Legacy Purposes.
Build something of your own.
Looking at other projects for inspiration or implementation tips is fine. Lifting their work and asking an LLM to rewrite or regurgitate it doesn't make it your work.
If you're using an LLM to build something big, start with the problem and build your own implementation from the ground up. Even if you are using an LLM iterate until you have an original body of work that someone else can understand and build on. Yes, LLMs make the word original come with an asterisk regardless of the level of time and thought that goes into it but the caveat is where the ideas are coming from, how they are implemented, how they are styled. Anyone can ask claude or chatgpt to do anything it's how you architect and implement that determines whether its gonna be a slow janky thing that crashes all the time or a decent app. We don't claim Harbor to be perfect, and KNOW there are always going to be things to fix never assume something is done.
Using libraries and building on existing projects is welcome when their licenses permit it. Please include the name of the projects you used, link to the source if applicable or website and tell us more. If code was adapted, say exactly where it came from. Credit does not replace permission or payment! A LLM rewrite does not remove copyleft obligations.
If we determine that a contribution contains plagiarism or work lifted from another project without the required attribution or consent we will remove it. The contributor may also be blocked from contributing again. If you're unsure whether reuse is permitted feel free to ask before contributing it.
A few places to start.
If you have access we suggest using a capable up to date paid model from Anthropic or OpenAI. DeepSeek and Kimi are also options if those are not available to you. Give yourself time to actually iterate and test things the LLM outputs. Always make time for iteration and testing as model performance is not a guarantee even at the best models.
You don't need a paid AI subscription to contribute. Hugging face is a useful place to learn and explore models that can be ran locally. Check system requirements and other model information before committing to a local model. Local models may lack in performance.
Pay people who make art.
Hire, pay and support real artists whenever you can. Illustrators and animators put their time and skill into making a project look better. That work deserves to be paid for.
Credit is not payment. Always agree on how the work can be used and respect the artist's terms before you use it. If you don't have the budget use work that is clearly licensed for your use with the needed credit or keep things simple until you do. You can use AI to make images that are otherwise inconsequential and don't mirror any specific artist's style or work. Like generic background of a fake scene, a wireframe from a drawing you made, a temporary image or non-critical icon or something those are all perfectly okay. We don't want real peoples real work that took them effort and time to be confused with something that took two sentences to create. We know where our strengths are and they aren't in illustration. We value those with that gift, and encourage you to hire someone for your personal projects as well. If you are a designer and want to make art for Harbor feel free! all of our Illustrations are free to reuse and repurpose. Just ensure you credit the illustrator
The cat mascot and illustrations on this site are by Abiyyu with animation by stass_motion. If you like their work, take a look at what they do.
Start with something small.
Pick something you actually care about or that is bothering you. Your first contribution does not have to be big. It's okay to ask how something works before trying to change it!
- Read the contributing notes and look for an existing issue. For a larger idea, talk it through in an issue before spending weeks on it. Jump in the discord to discuss!
- Fork the repository and follow the build instructions.
- Make your change on a branch, test it, and open a pull request explaining what changed. Be patient with review times we have full time jobs and priorities outside of this. Want to volunteer to review? Ask In Discord
Thank you to everyone who has put time into Harbor in any way. You can see the code contributors on GitHub and the project's acknowledgements in the repository or in the Attributions tab of your app in settings.