• Stars
    star
    177
  • Rank 215,985 (Top 5 %)
  • Language
    Go
  • License
    MIT License
  • Created almost 9 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

📡 A protocol to quickly transfer software builds (reference Go implementation)

wharf

Build Status build status codecov Go Report Card GoDoc MIT licensed

wharf is a protocol for incrementally transferring software builds over the network using minimal time/bandwidth.

It is used in production at https://itch.io to allow creators to quickly iterate & players to keep their library always up-to-date.

This repository contains the reference golang implementation of the wharf protocol, along with the reference protobuf definition files.

The complete spec is available online, as a book:

And can be contributed to via its GitHub repository:

See also

butler is the https://itch.io command-line tool and is a wharf client. It's the easiest way to try out wharf without having to code anything yourself.

Hacking on wharf

wharf is a pretty typical golang project, all its dependencies are open-source, it even has a few tests.

Regenerating protobuf code

protoc --go_out=. pwr/*.proto

protobuf v3 is required, as we use the 'proto3' syntax.

The tlc (containers) and bsdiff packages work similarly.

License

Licensed under MIT License, see LICENSE for details.

Contains modified code from the following projects:

More Repositories

1

itch

🎮 The best way to play your itch.io games
TypeScript
2,349
star
2

butler

🎩 Command-line itch.io helper
Go
747
star
3

itch.io

🐛 Public itch.io issues tracker and documentation - use support instead for private information!
Makefile
239
star
4

capsule

🎬 Cross-platform hotkey short video capture for games
C++
178
star
5

itch-setup

🌀 An installer for the itch.io desktop app
Go
64
star
6

shoom

🛣️ Cross-platform shared memory access for C++11
C++
41
star
7

sevenzip-go

📦 Go bindings to use 7-zip as a library
Go
34
star
8

wharf-spec

📡 A protocol to quickly transfer software builds
Shell
32
star
9

elevate

🔐 Command-line privilege elevation for Windows
C
23
star
10

wizardry

🍄 A parser, interpreter and compiler for libmagic rule files in golang
Go
18
star
11

smaug

🐲 separate user on windows + firejail on linux + sandbox-exec on macOS
Go
17
star
12

ox

🐂 ox (Os eXtended) contains system utilities for golang that aren't in stock syscall / os
Go
16
star
13

husk

🔩 Rust utilities, usable from Rust or Go
Rust
15
star
14

itchio-i18n

🌏 Translations for the itch.io website
MoonScript
15
star
15

libc7zip

📦 A C interface for https://github.com/itchio/lib7zip
C++
15
star
16

itch-docs

📝 Documentation for the itch.io app
JavaScript
14
star
17

go-itchio

☁ Go bindings for the itch.io API
Go
13
star
18

goff

🍿 Another take on Go FFmpeg bindings
Go
13
star
19

elefant

🐘 A Go library to probe ELF files
Go
11
star
20

zipserver

🎁 A microservice that extracts a .zip file and uploads individual entries
Go
11
star
21

go-brotli

Go bindings for the Brotli compression library (fork of kothar/brotli-go)
C
10
star
22

lib7zip

📦 A fork of https://github.com/stonewell/lib7zip allowing multiple-item extraction
C++
10
star
23

pelican

🐦 A Go library to probe PE files
Go
9
star
24

isolate

🚥 Helper tool to create, manage and run apps with unprivileged users for Windows
C
9
star
25

damage

🎁 A Go toolkit for DMG disk images
Go
8
star
26

itch-lite

Trying out rust + webview
HTML
8
star
27

itch-i18n

🌏 Translations for the itch desktop app
8
star
28

mitch

🐣 mitch is a (m)ock (itch).io server for testing purposes
Go
8
star
29

itch-compatibility-watchlist

🚨 Public issue tracker that receives reports of broken apps using the itch app (high traffic)
7
star
30

press-kit

itch.io press resources
6
star
31

boar

🐗 boar will sniff and dismantle most archives you throw at it
Go
6
star
32

httpkit

🚐 Various HTTP utilities (internal)
Go
6
star
33

savior

🚣 Extractors and Sources with save/resume support
Go
5
star
34

pdfserver

extract and convert pdfs to images on google cloud storage
Go
5
star
35

screw

🔩 Filesystem abstraction
Go
4
star
36

ftl-redux-electron-store

⎋ A fork of redux-electron-store that plays nice with electron-compile's Hot Module Reload
JavaScript
4
star
37

node-butlerd

🐦 Node.js client for butlerd, the butler daemon
TypeScript
4
star
38

dash

💨 dash figures out how to run something
Go
3
star
39

itch-diag

🦑 Diagnostics tool for the itch app
Go
3
star
40

valet

🛎️ Provides butler as a native node addon, via rust
Rust
3
star
41

dllassert

🎭 Asserts that a Windows DLL can be loaded successfully
Shell
2
star
42

hush

Library for silent installation of games
Go
2
star
43

zopf

🍞 tape + sinon + promises + sourcemaps = zopf
JavaScript
2
star
44

cutter

🗡️ A CLI for butlerd, the butler daemon
Go
2
star
45

hades

😈 sqlite persistence layer - backronym for "hades is not an ORM"
Go
2
star
46

fnout

🐚 Identify the contents of files, in particular, executables
JavaScript
2
star
47

cigale

🐜 Jenkins configuration generator
Ruby
2
star
48

intact

Verify a file's integrity from HTTP headers like content-length and x-goog-hash
Go
2
star
49

itchio.js

A javascript client to access the itch.io API from web games
TypeScript
2
star
50

itch-logview

📑 Log viewer for itch v25
Rust
1
star
51

node-asfw

🗔 Node.js bindings for SetForegroundWindow
C++
1
star
52

lake

Pools & files
Go
1
star
53

bob

👷‍♂️ bob helps with CI builds (JS helpers for CI scripts)
JavaScript
1
star
54

arkive

A fork of golang's "archive" package which supports concatenated zips
Go
1
star
55

kitch

👷 Beta builds of the itch app
1
star
56

spellbook

📖 A set of magic files as golang sources, compiled by wizardry
Go
1
star
57

wharf.js

📡 A JavaScript implementation of the wharf protocol
Go
1
star