Repository navigation
Expand file tree
/
Copy pathNOTICE
More file actions
69 lines (55 loc) · 3.47 KB
/
Copy pathNOTICE
File metadata and controls
69 lines (55 loc) · 3.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# NOTICE
`opencode-unlimited-proxy` is a thin orchestration bundle. It contains **no
vendored copy of the inference engine**: the engine runs from a public
container image. What lives in this repository is Docker Compose glue plus
build context for two helper images.
## Third-party components
### Cloudflare WARP rotator — `stack/warp/`
Files: `rotator.py`, `manager.py`, `LICENSE` — **copied verbatim** from
[`alztrk/opencode-ip-rotator`](https://github.com/alztrk/opencode-ip-rotator)
(`Dockerfile.warp`). Licensed under the MIT License, Copyright (c) 2026 alztrk.
The original license text is preserved in `stack/warp/LICENSE`.
`rotator.py` registers a Cloudflare WARP tunnel inside the container, runs it in
its own network namespace, and re-establishes the tunnel on the
`WARP_ROTATION_INTERVAL` cycle so the container's egress address changes.
Files: `Dockerfile`, `entrypoint.sh` — **derived from** the same project's
`Dockerfile.warp`, with one substantive change: upstream's entrypoint accepted the
Cloudflare terms of service automatically (`warp-cli --accept-tos ...`). Here
that acceptance is an explicit opt-in via `WARP_ACCEPT_TOS=1`, so no legal
agreement is entered on a user's behalf. The remainder of the build is unchanged.
### CONNECT proxy — `stack/tinyproxy/`
Files: `Dockerfile`, `tinyproxy.conf`, `gate.sh`
Thin `tinyproxy` packaging on top of Alpine Linux (`apk add tinyproxy`) plus
`gate.sh`, our own supervisor: it starts tinyproxy as a child and stops it when
the de-duplicator writes `/markers/<NODE_ID>`, restarting it if the marker is
removed. Draining a node this way closes the listening socket, so the engine's
proxy health check fails immediately instead of timing out.
tinyproxy is licensed **GPL-2.0**; it is installed as an Alpine package at
build time, not vendored here, so no source-distribution obligation arises.
### Address de-duplicator — `stack/dedupe/`
Files: `Dockerfile`, `dedupe.py` — ours, MIT.
Measures every node's real egress address through that node's own CONNECT proxy,
re-registers colliding nodes one at a time, and drains the nodes that cannot be
given a distinct address.
### Inference engine — pulled at runtime, not distributed here
`ghcr.io/jasonxu114514/opencode2api:latest` — [`jasonxu114514/opencode2api`](https://github.com/jasonxu114514/opencode2api),
**GPL-3.0**. This repository ships only a Compose reference to that image.
If you redistribute a derivative that includes the engine, GPL-3.0 applies to
that derivative.
### OpenCode upstream
Requests are forwarded to `https://opencode.ai/inference`. opencode.ai is a
third-party service operated independently of this project; no affiliation or
endorsement is claimed.
## Scope of the license
The MIT license in `LICENSE` covers this repository's own files: the Compose
files, `stack/config.json`, `stack/generate-compose.py`, `stack/dedupe/`,
`stack/tinyproxy/` (including `gate.sh`), `stack/warp/entrypoint.sh`,
`scripts/`, `docs/`, and `README.md`. It does not relicense the components
above; `stack/warp/rotator.py` and `stack/warp/manager.py` remain under
alztrk's MIT license.
## Terms of service, not licences
Two separate questions are easy to conflate. Publishing this repository raises
no licensing issue. *Running* it involves services with their own terms — see
the "Legal and terms of service" section of `README.md`, which quotes the
relevant Cloudflare Application Terms of Service and explains why the Cloudflare
terms are accepted only through an explicit `WARP_ACCEPT_TOS=1` opt-in.