Download the code
Everything this site describes —the service, the panel, the CLI, these very pages— lives in one single public repository:
It is open because a module you cannot obtain is not a module.
This documentation used to hang off antisionista.cl, the first site that uses it, and moved here precisely because the docs belong to the component and not to whoever hosts it. A closed repo left half of that argument unfulfilled: the integration manual is written so that somebody who does not know this code can install it, and it began at a step that person could not execute.
Where it is
| Repo | gitlab.com/pineiden/reply2fb |
| HTTPS | https://gitlab.com/pineiden/reply2fb.git |
| SSH | git@gitlab.com:pineiden/reply2fb.git |
| Main branch | main |
| Latest version | v0.1.0-rc.1 (2026-08-15) — downloads and notes |
| Licence | AGPL-3.0-or-later — see below |
Downloading it
Clone it naming the destination directory. This is not cosmetic: the
compose.yml in the integration manual
points at ./reply2social/backend, and a git clone without a destination
leaves you a reply2fb directory that does not match.
git clone https://gitlab.com/pineiden/reply2fb.git reply2socialcd reply2socialVerify
git log --oneline -1 # must show a commitls backend/Cargo.toml ui/core/package.json LICENSEThe three files must exist. If LICENSE is missing you are on an old clone:
bring the changes in with git pull.
No GitLab account, no git
If you only want to read it or build it once, you need neither an account nor a git client:
curl -L -o reply2social.tar.gz \ https://gitlab.com/pineiden/reply2fb/-/archive/main/reply2fb-main.tar.gztar xzf reply2social.tar.gzmv reply2fb-main reply2socialThat gets you main, which moves. If you are going to install it for real,
download a tagged version instead of main — that is the next section.
Tagged versions
If you are installing this into something that matters to someone, do not
install main: install a version. Each one has its entry in the
CHANGELOG,
which says what it ships and —more importantly— what it did not verify.
| Version | Date | What it is | Download |
|---|---|---|---|
| v0.1.0-rc.1 | 2026-08-15 | First tagged version. Release candidate: Instagram never ran against Meta. Notes | .tar.gz · .zip |
The always-current list: gitlab.com/pineiden/reply2fb/-/tags
With git:
# See which versions existgit tag --list --sort=-v:refname
# Stay on onegit checkout v0.1.0-rc.1Without git:
curl -L -o reply2social-v0.1.0-rc.1.tar.gz \ https://gitlab.com/pineiden/reply2fb/-/archive/v0.1.0-rc.1/reply2fb-v0.1.0-rc.1.tar.gztar xzf reply2social-v0.1.0-rc.1.tar.gzmv reply2fb-v0.1.0-rc.1 reply2socialmain is not a version. It moves, and it can break backwards
compatibility without warning. If you are going to install from main anyway,
write down the sha shown at
/-/commits/main the
day you downloaded it, and pin it with git checkout <sha>. Without a version
marker, a green build may be running the previous code and nobody finds out.
What is inside
reply2social/├── backend/ the service: Rust + Postgres, and the `reply2fb` CLI│ ├── src/ poller, ingest, archive, emission, networks│ ├── migrations/ the schema, in order│ └── Dockerfile what the manual's compose builds├── ui/│ ├── core/ @reply2social/core — HTTP client + rules, framework-free│ ├── svelte/ @reply2social/svelte — the eight screens│ └── empaquetar.mjs generates the .tgz files of step 6.1├── docs/ the design, the decisions and this site (docs/sitio/)├── compose.yml the reference deployment├── .env.example every variable, commented├── CHANGELOG.md what each version ships, and what it did NOT verify└── LICENSE AGPL-3.0You do not need all of it. Depending on what you are doing:
| If you want to… | You only need | Continue with |
|---|---|---|
| Run the service and talk to it over HTTP from your own front end | backend/, compose.yml, .env.example | Integrate, steps 0 to 5 |
| Also mount the eight screens | add ui/ | Integrate, step 6 |
| Understand how it is built before installing anything | docs/ and this site | The modules |
| Build these pages locally | docs/sitio/ | below |
Build this documentation locally
cd docs/sitionpm cinpm run build # builds and RUNS the verificationnpm run dev # local servernpm run build does not end at astro build: afterwards it runs
scripts/verificar.mjs, which fails if any page came out empty or if a diagram
did not render. It exists because two diagrams with a syntax error were
published as blank pages —with title, menu and footer, and nothing in
between— and the build said “Complete”.
The licence: AGPL-3.0
reply2social is published under the GNU Affero General Public License,
version 3 or later. The full text is in
LICENSE, and it is
also declared by backend/Cargo.toml and by both package.json files in ui/.
In practical terms:
| You may | On the condition of |
|---|---|
| Use it, for anything, commercially included | — |
| Study it and modify it | — |
| Install it on your site and run it | — |
| Redistribute it, modified or not | publishing the source code, under the same licence |
| Offer it as a network service, distributing nothing | publishing your modifications anyway to whoever uses it |
Why AGPL and not MIT, nor even GPL.
That last row is the whole difference. Under the GPL, someone can take this code, modify it, and offer it as a hosted service without publishing a single line: they never distribute the binary, so the obligation never triggers. The AGPL closes that door — it is clause 13, “Remote Network Interaction”.
This is a service: it is exactly the case the GPL leaves open. And what the module does —archiving other people’s material and republishing it with permission— depends on its guards being auditable. A closed derivative running on somebody else’s server would be a system deciding about third-party material and about consents, that nobody can review.
Reporting something, or proposing a change
- Issues: gitlab.com/pineiden/reply2fb/-/work_items
— yes,
work_itemsand notissues: GitLab migrated this project to work items and the old path returns 404. - Merge requests: gitlab.com/pineiden/reply2fb/-/merge_requests. They come from a fork of the repo and are accepted under the same licence.
If you are reporting an integration failure, the most useful thing you can attach is which verification from the manual failed and what it returned. The manual is written so that every step has one: a bare “it doesn’t work” forces us to guess which of the eight silent failure modes it was.
Do not open a public issue containing a token, an encryption key or a
.env. If you find a security problem, write privately to whoever maintains
the repo instead of opening an issue.
And now
- Step by step in your site — the integration manual, with a verification for every step. Start here if you already downloaded the code.
- A post’s journey — what the system does, before installing it.
- The modules — how what you just cloned is split up.