GitHub

A self-hosted archive for the recordings that matter.

Organised your way, shared with the people it belongs to, and searchable inside everything you have ever recorded.

Your recordings aren't lost. They're just out of reach.

The recordings that matter most are the ones with no second copy. Your child's first words, a long conversation with your father, a song your grandmother used to sing — and just as much the interview you will have to cite, a whole course of lectures, or the ideas you dictated in the car.

They deserve a place of their own, organised the way you organise things, on hardware you control. What they usually get is a folder, and an audio file you cannot skim is an audio file nobody ever opens again.

How it works

  1. 1

    Bring the audio in

    Upload in the browser, or import a folder from the command line. The original is kept exactly as it arrived.

  2. 2

    Transcribe with your engine

    Resonand doesn't transcribe. When you ask, it sends the audio to the engine you choose: a server on your own network, or a hosted one.

  3. 3

    Find it, and play from there

    One search across every recording. Click a result and it plays from that second.

  1. Your libraries, and the ones other people share with you
  2. Every recording with its waveform, its length and its transcript's state
  3. Click a line of the transcript and playback starts there
  4. Mark a favourite with its heart: yours alone, gathered from every library
  5. One search across every transcript — each result is a moment
  6. Upload from the browser: a file already in the archive is recognised
  7. Nothing is transcribed until you ask, and you are told where it goes
  8. Deleted recordings wait thirty days in the trash, and can be put back
  9. Share a library with somebody: to read, to edit or to manage

They're transcription tools that store files. Resonand is an archive that transcribes.

Most tools in this space began with one question — I have this file, transcribe it — and grew around the answer. Resonand began with the archive: the transcript is how you find a moment, and the original is what you keep. Change engines, or leave, and everything goes with you.

Who it's for

The voices you don't want to lose

Your grandmother on her childhood school, thirty-eight minutes of it. You remember one line, about Rosie by the bakery. Type bakery. You're there in three seconds.

Talks and interviews

Three days of a conference, recorded from the back of the hall. Find where somebody said that attention is not a resource, with a timestamp you can cite.

Thinking out loud

Six minutes walking home, mostly traffic, and one note worth keeping: ask, then shut up for a bit. Search finds it again.

Rehearsals

Every Tuesday until the concert, in a library the choir shares with you. Type altos and hear the entry that came in late.

Meetings

Minutes for anybody who missed a meeting, shared by the neighbours' association. Search parking and hear what was decided: as in March, nothing.

Everything else

Lectures, soundscapes and birdsong, dialect fieldwork, spoken diaries.

Your voice doesn't leave unless you ask

Audio leaves your instance only when somebody asks for a transcription, and only for the endpoint it's set up with. In the interface, you see where it goes before it's sent.

Point it at a server on your own network and nothing leaves at all.

Who's responsible. Whoever runs an instance is the data controller, and decides what gets recorded, who it's shared with and which services it touches. Laws on recording conversations differ by country, and checking yours is up to you.

Read the full note
A recording that has not been transcribed yet. Above the button that asks for a transcription, the interface says transcription runs on whisper.local, on your own network, and the audio does not leave it.A recording that has not been transcribed yet. Above the button that asks for a transcription, the interface says transcription runs on whisper.local, on your own network, and the audio does not leave it.

What the archive does

  • Search inside the audio

    One query across every transcript in your archive, not inside one file at a time. Every result carries a timestamp and plays from that exact second.

  • Organisation that persists

    Libraries, categories and cross-cutting tags. Built for hundreds of hours, not for one work session.

  • Multi-user from the ground up

    Real accounts for the people you share an archive with, and sharing at library level, with permissions resolved on every single read.

  • Transcripts as segments

    Always timestamped segments, never a wall of text — that is what lets the transcript follow along as it plays, and a click on any line jump there.

  • Programmatic access

    A documented HTTP API, with the web interface as just another client of it.

Run your own

One container, one volume, SQLite inside. Docker on amd64 or arm64: a Raspberry Pi will do.

  1. Fill in the key and run docker compose up -d.
  2. Open it and create the first account: the administrator, who makes everyone else's. No sign-up page, no mail server.
  3. Point it at a transcription endpoint, and test it with resonand check-transcription: it uses a tone, never your audio.

Engines. Any OpenAI-compatible server that returns timed segments, such as faster-whisper on your own network or Groq. Not OpenAI's gpt-4o-transcribe models, which return no timestamps.

Backups. resonand backup copies the database while it runs; restic or Borg takes the originals, and resonand fsck checks a restore.

Upgrades. The tag is pinned and the database migrates itself. Back up first: the way back is a restore.

docker-compose.yml
services:
  resonand:
    image: ghcr.io/resonand-app/resonand:0.2.0
    restart: unless-stopped
    ports:
      # Localhost only: put your reverse proxy in front for TLS.
      - "127.0.0.1:8000:8000"
    volumes:
      - resonand-data:/data
    environment:
      # openssl rand -hex 32
      RESONAND_SECRET_KEY: ""
      # Where transcription happens. It must end in /v1.
      # RESONAND_TRANSCRIPTION_BASE_URL: http://10.0.0.5:8000/v1

volumes:
  resonand-data:

Who's behind this

Resonand is built by one person, with the help of LLMs. Every decision is still mine.

What's next

More transcription engines, transcript editing and an MCP server. No dates, and the rest is on the roadmap.

Joining in

Issues, security reports and code are welcome. Open an issue before a large change.

If I ever stop

It's AGPL-3.0 with no CLA, it's documented, and one command exports everything in a readable format. Nobody gets stranded, and nobody can take it closed.