← Worship Assist

Host a Library

Run Worship Assist on your own cloud storage instead of a shared server.

Worship Assist can run on your own cloud storage instead of a shared server. You create a private storage bucket, hand the app one access key, and the app does the rest — you build your song library inside the app and share it with your team by link. Nothing is public; you own the storage and the content.

The app speaks the S3 API, so it works with Amazon S3 and Backblaze B2 (and other S3-compatible stores). This guide covers S3 and B2 in full.

This is the source for the published setup page the app links to: https://pmarch502.github.io/good-faith-studio/worship-assist/host/

Get Worship Assist for Mac or Windows

Worship Assist runs on a Mac or a Windows PC just as fully as on an iPhone or iPad — same songs, same features, and a big screen makes the timeline and mixer far easier to work with. Plenty of people practise on a computer and never host anything.

It's also the answer if you are setting up your team's library: building a song means picking audio files and converting them, which the phone and tablet app doesn't do, so that part happens here.

Download for Mac

Free · macOS 12 (Monterey) or later · 42 MB

Download for Windows

Free · Windows 10 or later, 64-bit · 26 MB · installs just for you, so it never asks for an administrator password

Installing on a Mac

  1. Click Download for Mac above. The file saves to your Downloads folder.
  2. Double-click Worship-Assist.dmg. A window opens showing the Worship Assist icon next to your Applications folder.
  3. Drag the Worship Assist icon onto the Applications folder, then close that window. (Don't run the app from there — that window is just the installer, and you can throw the .dmg away afterwards.)
  4. Open your Applications folder and double-click Worship Assist. It opens straight away: Apple has checked and approved this app, so you won't get a "damaged" or "unidentified developer" warning.

Installing on Windows

  1. Click Download for Windows above. The file saves to your Downloads folder.
  2. Run Worship-Assist-Setup.exe and follow the two or three clicks. Windows may say it "protected your PC" because it doesn't recognize us yet — click More info, then Run anyway.
  3. Open Worship Assist from your Start menu.

The first screen

You'll land on a screen called Connect a library. That's expected — the app starts empty and fills up with your own team's music. What you do next depends on why you came:

  • Someone sent you a library link? Paste it in and choose Connect. That's you finished — start playing. The rest of this page is setup you don't need.
  • Creating the library for your team? Choose Host a library and carry on below.

The big picture

  1. Create a private bucket — on Amazon S3 or Backblaze B2.
  2. Create one access key for that bucket (full access).
  3. In the app: Connect a library → Host a library, enter your bucket + key, and Connect. You're now the host.
  4. Add your songs in the app — Add songs → Publish. You never upload files by hand; the app converts and stores them for you.
  5. Share your library — the app gives you two links from that one key. Send the User link to your team.

Only steps 1–2 happen outside the app, and only once.

One key, two links — how access works

You make a single access key. When you enter it in the app, the app produces two shareable links from it:

Both links point at the same bucket with the same key. The difference is enforced by the app — a User link simply doesn't show the publish/manage tools.

Treat the links like passwords. The access key is carried inside the link (lightly scrambled, not encrypted), so anyone you send a link to effectively holds the key. Share links only within your team. This is the right level of protection for a trusted group; it isn't meant for posting a link publicly. Two good habits:

What the app will ask for

When you connect, the app asks for these (you get them from the provider setup below):

FieldWhat it is
ProviderAmazon S3 or Backblaze B2 (pick from the list)
Regionyour bucket's region code — the app builds the endpoint from it
Bucketyour bucket name
Access key IDthe public half of your key
Secret access keythe private half — shown once, so save it
Library name (optional)a friendly label, e.g. "Grace Worship"
Folder / prefix (optional)leave blank unless you want the library under a subfolder

Amazon S3

1. Create the bucket

  1. S3 console → Create bucket.
  2. Bucket name: globally unique (e.g. grace-worship-library).
  3. Region: pick one near your team and note its code (e.g. us-east-2).
  4. Block Public Access: leave ON (fully blocked). The app uses your key, not public access.
  5. Create.

2. Turn on versioning (your safety net)

Bucket → Properties → Bucket Versioning → Edit → Enable → Save. Now every overwrite and delete is recoverable.

3. Create one access key

  1. IAM console → Users → Create user (e.g. worship-app, no console sign-in needed).
  2. Permissions → Attach policies directly → Create inline policy → JSON, and paste the policy below (replace grace-worship-library with your bucket name).
  3. Finish creating the user, then open it → Security credentials → Create access key → Application running outside AWS → copy the Access key ID and secret now (the secret is shown only once).
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ListTheLibrary",
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::grace-worship-library"
    },
    {
      "Sid": "ReadWriteObjects",
      "Effect": "Allow",
      "Action": ["s3:GetObject", "s3:PutObject", "s3:DeleteObject"],
      "Resource": "arn:aws:s3:::grace-worship-library/*"
    }
  ]
}

(Using a prefix? Change the second Resource to arn:aws:s3:::grace-worship-library/your-prefix/*.)

4. Values for the app

FieldValue
ProviderAmazon S3
Regionyour bucket's region (e.g. us-east-2)
Bucketyour bucket name
Access key ID / Secretfrom step 3

Backblaze B2

B2 exposes an S3-compatible API, so the same app works. The differences: B2's console, and it keeps file versions by default (no versioning switch to flip).

1. Create the bucket

  1. B2 console → Buckets → Create a Bucket.
  2. Bucket unique name (e.g. grace-worship-library).
  3. Files in Bucket are: Private.
  4. Create.

2. Find the endpoint + region

On the bucket's page, B2 shows an Endpoint like s3.us-west-004.backblazeb2.com. The region is the middle segment — here, us-west-004. That's what the app wants.

3. Create one application key

  1. App Keys → Add a New Application Key.
  2. Name it (e.g. worship-app).
  3. Allow access to Bucket: restrict it to your bucket.
  4. Type of Access: Read and Write (this includes delete).
  5. Create — B2 shows the keyID and applicationKey once. Copy both.

4. Values for the app

FieldValue
ProviderBackblaze B2
Regionthe endpoint's middle segment (e.g. us-west-004)
Bucketyour bucket name
Access key IDthe B2 keyID
Secret access keythe B2 applicationKey
B2's free tier includes 10 GB of storage — enough to try a few songs, not a full library.

In the app (once you have the values)

Connect as host

  1. Open Worship Assist. On Connect a library, tap Host a library.
  2. Pick your Provider, then enter Region, Bucket, Access key ID, Secret (the app fills in the endpoint).
  3. Your Host and User links appear. Tap Connect to this library — you're now hosting.

Add your songs

Use Add songs → Publish in the app (host only, on a computer). Pick your stems; the app converts and uploads them into your bucket. You never touch storage folders by hand.

Adding a MIDI part

If you have the notes for a part as a .mid file, add it in the app: ? → Manage library songs…, click the song, then Add stems… and pick the file. Name it after the part — Piano.mid beside Piano.mp3. It then shows up in Add track for everyone, like any other part. You never put it in storage by hand.

It needs to line up with the audio you published: same tempo, same measures, and the same count-in if the audio has one. It doesn't have to run to the end of the song — a part that drops out early is normal. If it starts a bar or two early or late, you can drag it into place on the song's Edit Sections and Tempo/Time Sig Changes… screen. The app's User Guide (For Hosts → Adding a MIDI part) has the details.

Invite your team

On the Host a library screen, copy the User link and send it to your team (text, email, group chat). Each person pastes it into their own Connect a library screen — and they're in, with the play and arranging tools but not publishing. Keep the Host link for yourself or a co-host.

Other S3-compatible providers

The app works with any S3-compatible object store. In the app, choose Other (S3-compatible) and supply the endpoint + region yourself. The setup pattern is always the same: a private bucket + one full-access key scoped to it.

ProviderEndpoint patternRegion example
Cloudflare R2<account-id>.r2.cloudflarestorage.comauto
Wasabis3.<region>.wasabisys.comus-east-1
DigitalOcean Spaces<region>.digitaloceanspaces.comnyc3
MinIO (self-hosted)your server hostoften us-east-1

(Amazon S3 and Backblaze B2 are the two we've set up and tested.)

Checklist