/httptoolkit-desktop

Electron wrapper to build and distribute HTTP Toolkit for the desktop

Primary LanguageTypeScriptGNU Affero General Public License v3.0AGPL-3.0

HTTP Toolkit Desktop Build Status

This repo contains the desktop build setup for HTTP Toolkit, a beautiful, cross-platform & open-source HTTP(S) debugging proxy, analyzer & client.

Looking to file bugs, request features or send feedback? File an issue or vote on existing ones at github.com/httptoolkit/httptoolkit.

What is this?

This repo is responsible for building HTTP Toolkit into standalone desktop installers & executables that users can run directly on Windows, Linux & Mac.

HTTP Toolkit consists of two runtime parts: a UI, written as a single-page web application, and a server, written as a node.js CLI application.

This repo builds a single executable that:

  • Includes the latest build of httptoolkit-server
  • When run:
    • Starts the server in the background
    • Opens the UI in an Electron window
    • Kills the server when closed

This means this is mostly Electron configuration & setup, and build configuration for the executable and various installers. It's built using Electron Builder.

This isn't the only way to run HTTP Toolkit! It's the most convenient option for most users, but it's also completely possible to run the server as a standalone tool and open the UI (hosted at https://app.httptoolkit.tech) in any browser you'd like.

Note that the resulting executable doesn't autoupdate (at the moment). Instead both the server (as an oclif app) and the web UI (via service workers) include their own auto-update functionality.

The builds themselves are done on GitHub Actions, and tagged main builds are automatically published from there as github releases.

Contributing

If you want to change the behaviour of the HTTP Toolkit desktop shell (but not its contents), change how it's built, or add a new target platform or format, then you're in the right place 👍.

To get started:

  • Clone this repo.
  • npm install
  • To build & run the electron app locally:
    • npm start - runs the desktop app, downloading the latest live server & using the live UI from app.httptoolkit.tech.
      • This is useful if you're working on just the desktop app, and want to see your changes with the real live environment.
    • npm run start:dev - runs the desktop app, with no built-in server using the UI from localhost:8080
      • This effectively assumes you're bringing your own working UI & server, and is useful for working on this.
      • You can start both from the UI project with just npm start, to work on the UI within the desktop app.
      • Alternatively, you can run npm start in the server project, and npm run start:web in the UI project, to work on the server or both.
  • To build distributable packages:
    • npm run build - this will attempt to build & package the desktop app for your current platform

A few tips:

  • Electron dev behaviour isn't identical to production build behaviour, make sure you check your changes in a real built version.
  • Most distributable build configuration is in under the build field in package.json.
  • To fully build packages, you may find some platforms complain about that signing certificates are required. You'll probably need to unset fields like forceCodeSigning to disable that.
  • In CI, pull requests don't receive secret environment variables, so builds may fail. Confirm that that's what's happening, and if so that's ok - the team will manually build & evaluate PR changes to resolve this.

License

The HTTP Toolkit desktop application source code is licensed under AGPL-3.0, as documented in this repo.

The binary downloads available in this repo or from httptoolkit.tech however may be used under one of two licenses: