Skip to content
Local Drive
NewStep by step guides, with screenshots

Open source Drive in 1 file

One Go binary runs the server on a machine you own. Apps for phone, tablet, desktop and browser connect to it.

1 GB
of RAM is enough
6
platforms, one codebase
0
bytes of telemetry

MIT licensed. No account, no subscription, no telemetry.

Local Drive
The files browser on desktop, showing folders and files with their type colours
Setup

Running in one command

There is no configuration file to write first. On the first start the server generates its own secrets, mixing fresh randomness with an identifier unique to that machine, and writes them where it can read them again. Anything you do set in the environment always wins.

  • No database server, no Redis, no cgo
  • Cross compiles to Windows, macOS and Linux on x86-64 and ARM64
  • Designed to run on 1 GB of RAM
$ ./localdrive
 
# asks a few questions, then prints a QR code to scan
http://localhost:7443

All you need. Nothing to install, no service to register, and deleting the file uninstalls it.

The apps

One codebase, every screen it runs on

Phone, tablet, desktop and browser. Desktop is a different design rather than the phone stretched, which is the difference between an app that was ported and one that was built.

  • Windows
  • macOS
  • Linux
  • Android
  • iOS
  • Web
Gallery
The gallery on desktop, a masonry grid of photos grouped under month headings
Every photo in one timeline, grouped by month and ordered by when it was taken rather than when it was uploaded.
The gallery on a phone
The same timeline, on a phone
The files browser on a phone
Files, laid out for a thumb
Transfers
Transfers1 uploading, 1 queued, 1 needs attention
  • Roof survey.jpg

    Uploading

    4.1 MB of 6.6 MB, 12 seconds left

  • Kitchen rebuild.docx

    Queued

    Waiting for the upload above

  • Site photos.zip

    Failed

    The server ran out of space. Free some and retry.

    Retry
  • Household budget.xlsx

    Done

    Uploaded 2 minutes ago

A transfer is never silent. Every row says what it is doing, and a failure names its actual reason.
Share

Share

Kitchen rebuild.docx

PeopleLink
  • Sara

    On this network

    Can edit
  • Omar

    On this network

    Can view
  • Layla

    Share
  • Yusuf

    Share
Sharing with a person is a tap on a face. Nothing here is a text field, so nobody types a username.
What you get

A drive for the people in your house

Built for a home or a small team on one network, not for selling storage back to you by the month.

Everyone in the house gets their own

Invite people with a code. Each account has its own files, its own storage figure, and its own trash. An admin can see how much space someone is using and never what is in it.

  • They pick their own username and password
  • Nothing is shared until somebody shares it
  • Two factor, required for anyone who runs the server
The invite dialog showing a QR code and an invite code to send someone

Send a file to someone with no account

Make a link and send it however you already talk to them. Put a password on it, give it a date it stops working, or revoke it and it dies the moment you press the button.

  • Turn downloads off so it can only be viewed
  • Expiry and password are two switches, not a setup
  • Revoking is immediate, not a scheduled job
The share dialog with a link, an allow download switch, expiry and password options

Photos land in one timeline

Anything you upload that is a picture or a clip shows up in the gallery, newest first, without filing it anywhere. Videos get a real frame from the video as their thumbnail.

  • Ordered by when it was taken, not when it was uploaded
  • Full resolution when you open one, thumbnails until then
  • Mark an album to keep on a device and it opens offline
The gallery showing uploaded photos in a continuous timeline
Footprint

It runs on a machine you already have

One process, holding a few megabytes. No database server, no PHP, no background workers to keep alive. An old laptop or a Raspberry Pi with 1 GB of RAM is not a compromise here, it is the target.

Memory in use

18.7MB

18.7 MB used1 GB of RAM

A 0.0.1 build serving requests, measured on Windows 11. The container ships with a 512 MB limit, about twenty five times more headroom than it uses.

What it needs installed

A runtimeNone
A database serverNone
A web serverNone
Shared librariesNone
Files to downloadOne, 20 MB

The usual self hosted drive is four or five services that have to agree with each other. This is one file. It builds withCGO_ENABLED=0against a pure Go SQLite driver, so there is nothing to link against and nothing to keep in step.

Scope

What it deliberately does not do

Three things people expect and will not find, said here rather than discovered a week in.

Not a sync client
Files live on the server and are handed to clients on request. Offline availability is a per device choice, not a whole disk mirror.
Not a peer to peer beam
Sharing goes through the server so the other person still has access next week from a different device. That is the point of a Drive rather than Bluetooth.
Not a folder you write into
Storage is content addressed, so writing into the backing directory from outside the app is unsupported, the same way you cannot add a file to Google Drive by writing into its bucket.
On the roadmap

Search inside your videos, on your own machine

Today you search file names. We are working on searching what is actually in them: every frame of every video, every photo, every document, indexed on the machine that holds them. Find the second somebody blew out the candles without remembering what you called the file.

What it would look like

birthday cake, candles

summer-2025.mp4

Party balloons

0:04

A wrapped present

0:12

A birthday cake with lit candles

0:21

People at a birthday party

0:33

A slice of cake on a plate

0:47

One match at 0:21, in a video nobody tagged.

It never leaves the machine

The model runs where your files are. Nothing is uploaded, and there is no API key, because there is no third party involved.

Video, frame by frame

Indexed across time rather than as one thumbnail, so a search lands on the moment instead of the file.

Optional, and off by default

Indexing costs power and heat. It is something you switch on for the libraries you want it on.

This is on the backlog, not in the product. It is a large piece of work and it happens faster if people want it.

Star it on GitHub
Ownership

Your hardware, and it behaves like it

Three claims, each of them something you can go and check in the source rather than take our word for.

Admin is not a master key

An admin manages accounts, storage and settings. There is no admin bypass in the ownership query, so being one does not let you read anyone else's files.

Permissions are enforced on the server

Viewer, editor, owner, checked on every request. Something you cannot see returns a 404 rather than a 403, so the API never confirms that a file exists to someone with no access to it.

No account with anyone

No registration, no telemetry, no cloud dependency. People join by an invite code and pick their own password, which the admin never sees.

The documentation is the whole thing

Architecture, the permission model, every environment variable, and what each platform can honestly promise.

Read the docs

Put it on a machine tonight

One binary, no configuration file, and nothing to sign up for. If it is not for you, delete the folder and your files are still where you left them.