• 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