个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Run open collars: boundaries, herd moves, data and decisions. Desktop app and self-hosted server.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Runs virtual fence collars, stores their data, analyses it, and decides where the herd goes. One Rust server with the web UI built in. The desktop app runs that server for you.
| macOS app (Apple Silicon and Intel) | openpasture-macos.dmg |
| Server, Linux x64 | openpasture-server-linux-x64.tar.gz |
| Server, Linux arm64 (e.g. Raspberry Pi 4 or 5, 64-bit OS) | openpasture-server-linux-arm64.tar.gz |
| Server, macOS Apple Silicon | openpasture-server-macos-arm64.tar.gz |
| Server, macOS Intel | openpasture-server-macos-x64.tar.gz |
| Docker | ghcr.io/open-pasture/openpasture |
The desktop app is macOS only for now; the server runs on Linux and macOS. Checksums are in
SHA256SUMS on each release, and what
changed in CHANGELOG.md.
mkdir openpasture && cd openpasture
tar xzf ../openpasture-server-linux-x64.tar.gz
./openpasture serve --bind 0.0.0.0 --port 7878
--bind 0.0.0.0 listens on every network the machine is on. Behind a reverse proxy or tunnel,
keep the default 127.0.0.1 instead (see docs/SELF-HOSTING.md).
Open http://<host>:7878. On the machine itself (127.0.0.1) no token is needed. From anywhere
else the app asks for its token once:
./openpasture token
Data lives in OPENPASTURE_DATA_DIR, else the platform data directory; --data-dir DIR
overrides both. It is one SQLite database plus Parquet files, so a copy of the directory is a
backup.
docker run -d --name openpasture -p 7878:7878 -v openpasture:/data ghcr.io/open-pasture/openpasture
docker exec openpasture openpasture token
The image runs as a non-root user and keeps everything in the /data volume.
For a farm: an https address for collars and phones, systemd, backups and upgrades are in
docs/SELF-HOSTING.md; texting and alerts in docs/TEXTING.md.
Until you have a collar, collar-sim, the simulator (in the server tarball, or
simulation/collar-sim), speaks the real collar protocol on a farm of its own:
./collar-sim farm
It starts a throwaway server on port 7991 with "Simulated farm", two paddocks and a herd of
twelve simulated collars, and prints the address. Draw a boundary, send it, and watch the acks
come in and the herd walk into it. The app marks every simulated collar "Simulated", reports
leave them out, and the simulator refuses port 7878 and any data dir with real collars. See
simulation/README.md.
Needs Rust (rustup installs the version pinned in rust-toolchain.toml) and
bun.
cd ui && bun install && bun run build && cd ..
cargo build --release -p op-cli -p collar-sim # target/release/openpasture, collar-sim (the simulator)
cargo test --workspace
bun run desktop:build # the macOS app, Apple Silicon
bun run desktop:release # universal .app and .dmg
The server embeds ui/dist at build time; if it is missing, the build runs bun for you.
Releases are cut by pushing a tag; see docs/RELEASING.md.
docs/SELF-HOSTING.md: running it for a farmdocs/TEXTING.md: Twilio, email, webhook, push, the relaydocs/api/: the APIs, by what you're building (HTTP, live feed, MCP,
fleet, and the collar protocol in opencollar)docs/ARCHITECTURE.md: how it's built; docs/PLAN.md:
the original decisionsdocs/RELEASING.md, CONTRIBUTING.md,
SECURITY.mdThe app is AGPL-3.0. op-protocol and op-geo are Apache-2.0, so collar firmware
and other software can use the protocol and geometry without the AGPL. See NOTICE;
every release lists the third-party code it ships, with licences, in THIRD-PARTY-NOTICES.
Found a security problem? Report it privately: SECURITY.md.