Metadata-Version: 2.4
Name: abstract_securefiles
Version: 0.1.6
Summary: Secure Files: share local files and folders through abstractendeavors.com (or your own server) without uploading them. Includes the desktop agent, the shared tar/resume core and the server relay.
Author-email: putkoff <partners@abstractendeavors.com>
License: MIT
Project-URL: Homepage, https://abstractendeavors.com/secure-files
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: MacOS
Classifier: Operating System :: Microsoft :: Windows
Classifier: License :: OSI Approved :: MIT License
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: aiohttp>=3.9
Requires-Dist: cryptography>=41
Provides-Extra: relay
Requires-Dist: psycopg[binary]>=3.1; extra == "relay"
Provides-Extra: test
Requires-Dist: pytest>=7; extra == "test"

# abstract_securefiles

Share files and whole folders **straight from your own computer** through
[Secure Files](https://abstractendeavors.com/secure-files) — nothing is uploaded.
When someone opens your share link, the file streams from your computer through
the relay, with the same passwords, download limits and resumable downloads as
files hosted on the server. Folders download as one uncompressed `.tar`.

## Install (Linux, macOS, Windows)

```bash
pipx install abstract-securefiles      # or: python3 -m pip install --user pipx && python3 -m pipx install abstract-securefiles
pipx ensurepath                        # once, so `securefiles` is on your PATH (open a new terminal after)
securefiles setup                      # start at login, start now, open http://127.0.0.1:47821
```

macOS without Python: run `python3` once in Terminal and accept Apple's Command Line Tools install
(Python 3.9+), or install Python from python.org. Windows: install Python from python.org (tick "Add to PATH").

Then, on abstractendeavors.com/secure-files → **My computers** → **Add a computer**,
enter the pairing code in the control panel (or `securefiles pair CODE`).
Pick files/folders to share in the control panel; they appear on the website under
`devices/<computer name>/`, where you create links, passwords and limits.

Commands: `securefiles setup | serve | open | pair CODE | share PATH... [--name NAME] | unshare PATH | status | direct [--public-url URL] | unpair | uninstall`.

## Direct (peer-to-peer) transfers

Members you've granted access to (Secure Files → **People**) can download straight from
your computer — the server only checks their access and introduces the two sides; the
bytes never pass through it. The agent listens on **TCP 47822** (HTTPS with its own
certificate, which downloaders pin) and asks your router to forward that port
(UPnP / NAT-PMP). If your router can't, forward TCP 47822 to this computer yourself and run:

```bash
securefiles direct --public-url https://YOUR.PUBLIC.IP:47822
```

`securefiles direct` shows the status. When a computer isn't reachable, downloads
automatically use the relay instead (same bytes, so they resume across both).
Recipients download with the Secure Files download client
(`https://abstractendeavors.com/downloads/securefiles-download.py`): aria2, up to 16
connections, resumable. Each direct ticket lasts 30 minutes and is renewed by the
client while access remains granted.

### Headless servers

`deploy/securefiles-agent.service` runs the agent as a system service (edit `User=`
and the paths), then `securefiles pair CODE`, `securefiles share PATH` as that user.

**Upgrading:** `pipx upgrade abstract-securefiles && securefiles setup` (setup restarts the running agent).

Access: anyone with an abstractendeavors.com account (accounts are invite-only).

## Contents

- `abstract_securefiles.core` — deterministic tar + HTTP Range transport shared by server and agent.
- `abstract_securefiles.agent` — the desktop agent (local control panel on 127.0.0.1 only).
- `abstract_securefiles.relay` — the server relay (`pip install abstract-securefiles[relay]`, run `securefiles-relay`).
