Install

Timelinize is still in early development stages. You will encounter bugs and incomplete functionality. I hope you'll be patient with the development process and participate in feedback. Thanks for trying out the pre-releases!

System requirements

  • Operating system:
    • macOS 12 or newer
    • Windows 10 or newer
    • Linux
  • vips (for photo processing)
  • ffmpeg (for video processing)
  • uv (for semantic search)
  • Recommended:
    • GPU (NVIDIA 20-series or newer) or Apple chip (M2 or newer)

See the instructions below to help you get the dependencies installed for your platform.

Download

We recommend most users download the latest release for their platform. Only download development builds if you want the most recent patches (and bugs) that haven't yet been released.

Latest release (recommended)     Development builds

Then be sure to follow the instructions below to run it.

Instructions

Windows
  1. Install vips:
    1. Go to the latest vips release for Windows.
    2. Download the asset for your platform architecture with -all- in the name.
    3. Extract the archive, or at least the bin subfolder, to a path of your choosing.
    4. Add the full path of the extracted bin folder to your Path environment variable. (An easy way is to press the ⊞ Win key, type "env", and hit Enter, then proceed in the GUI.)
    5. Restart any open shells/command prompts, and enter echo %Path% to ensure the environment has been updated.
  2. Install ffmpeg:
    curl.exe https://webi.ms/ffmpeg | powershell
  3. Install uv:
    powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
  4. Download Timelinize (see above).
  5. Extract the program, timelinize.exe.
  6. Run the program (from the command line, for logs). We are not yet code-signed, so you will have to override built-in OS protections:
    • You will get a warning that this software is not signed. Click More info and then Run anyway.
Mac
  1. Install libvips:

    brew install vips
  2. Install ffmpeg:

    brew install ffmpeg

    or

    curl https://webi.sh/ffmpeg | sh
  3. Install uv:

    curl -LsSf https://astral.sh/uv/install.sh | sh
  4. Download Timelinize (see above).

  5. Extract the program, and make sure it is executable: chmod +x ./timelinize

  6. Run the program from the Terminal (for logs). We are not yet code-signed, so you will have to override built-in OS protections:

    Follow these instructions to run apps from unidentified developers (that's me!). If the error you get says that Timelinize "is damaged," that's a lie: checksums probably match; the real problem is that Apple has placed it in "quarantine" because it was downloaded. You can either:

    • Do a two-finger click and select Open, twice (once for the warning, the second time to open it)
    • Or, open Terminal and run this command:
      xattr -d com.apple.quarantine ~/Downloads/timelinize
      (adjust path as needed). It should finally run, but if you can't open or create a timeline, Apple may be blocking access to your disk. The easiest way around this is to give Timelinize "Full Disk Access" in System Settings (or at least access to folders you'll be using).
Linux
  1. Install libvips:
    • Debian/Ubuntu/Raspbian:
      sudo apt install -y libvips
    • Arch Linux:
      sudo pacman -S libvips
  2. Install ffmpeg:
    • Debian/Ubuntu/Raspberry Pi instructions:
      sudo apt install -y ffmpeg
    • Arch Linux instructions:
      sudo pacman -S ffmpeg
  3. Install uv:
    curl -LsSf https://astral.sh/uv/install.sh | sh
  4. Download Timelinize (see above).
  5. Extract the program, and make sure it is executable: chmod +x ./timelinize
  6. Run ./timelinize. A browser tab should open automatically.
Docker

Pull the automated Docker image from GHCR:

docker pull ghcr.io/timelinize/timelinize/

It can be run like so:

docker run -p12002:12002 \
	-v /path/to/repo:/repo \
	-v /path/to/config:/app/.config/timelinize \
	ghcr.io/timelinize/timelinize

That will run Timelinize on port 12002, with the timeline repository mounted at /path/to/repo (change it to suit your needs) and the configuration directory mounted at /path/to/config (change it). When using Docker bind mounts like above, make sure the directories exist on your host machine and that they belong to the user ID 1000.

File system access

Because Timelinize is running inside a Docker container, it won't have access to your host's filesystem. You will need to mount the directories you want to access as volumes, to be able to load data into Timelinize.