| .forgejo/workflows | ||
| cmd/hammerhead | ||
| dev | ||
| docker | ||
| docs | ||
| hammerhead | ||
| .gitignore | ||
| .gitmodules | ||
| .markdownlint.yaml | ||
| .pre-commit-config.yaml | ||
| build.sh | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| mkdocs.yml | ||
| README.md | ||
| requirements.txt | ||
Hammerhead
Sublight thrusters, full power!
Note
Interested in Hammerhead as a project? Join #hammerhead:nexy7574.co.uk to discuss :)
Hammerhead is a small Matrix homeserver written in Go. It is not intended to be a full-fledged implementation, however, great strides are made every now and again, so who knows. Maybe something exciting will come of this!
The original intention for this implementation was for me to do hands-on learning to understand low-level properties of the Matrix protocol, such as the likes of federation, end-to-end encryption, and state resolution. As a result, a somewhat usable server has emerged, and I plan to sculpt it into a power-user tool, rather than something used for deployment at scale.
If you want a proper Matrix server, please consider continuwuity!
The name?
I came up with the name "Hammerhead" after watching Rogue One: A Star Wars Story, where a Hammerhead corvette makes a cameo. Previously the project was called "nexserv", but that was more of a codename than anything.
nerding out a little, spoilers for Star Wars: Rogue One
I chose "Hammerhead" because the Hammerhead corvette is a small but technically capital class starship. The Hammerhead that made an appearance in Rogue One was unique, as it was hailed during the battle of Scarif to sneak up behind, ram into, and use a Star Destroyer that was previously disabled by ion torpedoes as a battering ram to destroy another nearby Star Destroyer, ultimately crashing into the Scarif planetary shield, destroying all three, and allowing the Rebel fleet to dispatch re-enforcements to those trapped on the planet. While it got very limited screen time, it was ultimately this tiny ship that turned almost certain defeat into a victory, allowing the Rebellion to retrieve the death star plans and ultimately the destruction of the Death Star, leading to winning the galactic civil war.
I like to think that Hammerhead the Matrix server is a bit like that ship - small, unassuming, rarely seen, but still packing a hefty punch with the capability to make a big difference.
Installing
Hammerhead is still in a "rapid-iteration" development cycle, so please be aware that by the time you've got Hammerhead running, there's likely already a new version out.
The build action workflow
produces pre-compiled static release binaries for Linux (x86_64 and ARM64) on every push to the dev branch.
Tags will automatically get built and released as well, however binaries for Darwin and Windows will both be
build manually as needed. If there is more interest in these platforms, they may be added to CI in the future.
Getting started
This section has been moved to the documentation (which will be hosted at an external website for proper viewing eventually).
Running
<insert warranty void sticker here>
Just running hammerhead is all you need to start the server. There is a Dockerfile
(which you can be built with docker build -f docker/release.Dockerfile -t codeberg.org/timedout/hammerhead:dev .) if
you wish to run Hammerhead with Docker, otherwise a simple systemd service file will suffice (but is not provided).
Packages for popular distros, alongside OCI releases, will be automatically provided once stable releases are tagged.
Roadmap?
There isn't really a roadmap as such, but issues and pull requests get triaged into version milestones, which can be read as a sort of roadmap.
If you wish to discuss things related to Hammerhead, please join the Matrix room at #hammerhead:nexy7574.co.uk.
Demo
There is a demo instance available at Hammerhead.nexy7574.co.uk which you can use to give Hammerhead a spin without
installing it. The registration token is this repo's HTTPS codeberg clone URL, you can register using any client,
such as Cinny or Element Web.
Caution
No guarantee of security, privacy, uptime, integrity, or availability is made. Please consider that your data may (and likely will) be deleted at a moment's notice without warning. Do not rely on this instance for anything you would miss if it got deleted.
Federation is enabled, so please be mindful. If this instance receives a lot of abuse, it may go closed-federation, no federation, or even just taken offline.