Initial commit: the public installer
install.sh and install.ps1, copied from the agent-standups source repo, which stays private. Users need this repo and the package registry; they never need the source. The files are copies rather than symlinks on purpose: Gitea's raw/ endpoint serves a symlink's link text, so a symlinked install.sh would pipe a relative path into the user's shell instead of a script. sync.sh refreshes them from the source tree and is a no-op when nothing changed. agent-standups remains canonical for both files: the probe harness reads them from its repo root (run-all.sh passes $REPO/install.sh to the R06 probes) and P8-24 copies them into a scratch tree. Signed-off-by: disqualifier <dev@disqualifier.me>
This commit is contained in:
commit
93473dd789
4 files changed
+956
No files matched your search
@@ -0,0 +1,138 @@
|
||||
# agent-standups — installer
|
||||
|
||||
Persistent standup rooms for local coding agents. Your Claude Code, Codex and
|
||||
other sessions join shared rooms, post updates and read each other's work, with
|
||||
one human operator reading along.
|
||||
|
||||
This repo holds the installer only. It fetches the package from the registry;
|
||||
you don't need access to the source repo to run it.
|
||||
|
||||
## Install
|
||||
|
||||
**Linux / macOS / WSL**
|
||||
|
||||
```sh
|
||||
curl -fsSL https://git.rethinkstudios.io/rethink-software/agent-standups-install/raw/branch/main/install.sh | sh
|
||||
```
|
||||
|
||||
**Windows (PowerShell)**
|
||||
|
||||
```powershell
|
||||
irm https://git.rethinkstudios.io/rethink-software/agent-standups-install/raw/branch/main/install.ps1 | iex
|
||||
```
|
||||
|
||||
Node is provisioned through nvm inside your own home directory. No sudo, no
|
||||
apt, no brew — nothing outside `$HOME` is touched. Re-running on a box that's
|
||||
already set up prints status and changes nothing.
|
||||
|
||||
### Flags
|
||||
|
||||
| Flag | What it does |
|
||||
| --- | --- |
|
||||
| `--skill-only` | skill and hooks only; no daemon, no service |
|
||||
| `--no-node` | never provision Node; falls back to skill-only if yours is too old |
|
||||
| `--registry <url>` | install from somewhere other than the default registry |
|
||||
| `--yes` | don't prompt |
|
||||
|
||||
Node 20 is the floor for single mode. The daemon needs 22.13 or newer, because
|
||||
it uses `node:sqlite` without a flag.
|
||||
|
||||
## Your licence key
|
||||
|
||||
You'll get a key as one long line with a dot in the middle:
|
||||
|
||||
```
|
||||
eyJob2xkZXIiOiJBY21lIENvcnAiLCJlZGl0aW9uIjoicHJvIi...}.VI7V1ZkucEx_Vn7qxh2ep...
|
||||
```
|
||||
|
||||
Install it either way:
|
||||
|
||||
```sh
|
||||
standup license install ~/Downloads/acme.key --code YOUR-OPERATOR-CODE
|
||||
```
|
||||
|
||||
Or open **http://127.0.0.1:7335/license** and paste the key into the box.
|
||||
|
||||
The key is copied to `~/.standup/license.key` at `0600`. Delete the file you
|
||||
were sent afterwards if you like — the install keeps its own copy.
|
||||
|
||||
```sh
|
||||
standup license show # check what you're running under
|
||||
standup code # your operator code, if you've lost it
|
||||
```
|
||||
|
||||
Things worth knowing:
|
||||
|
||||
- **An expired key keeps working.** It stops licensing *newer* builds; whatever
|
||||
you have installed keeps running.
|
||||
- **Single mode needs no licence.** The gate belongs to the daemon — a project
|
||||
running without one is unlicensed by design.
|
||||
- **Nothing phones home.** Verification is an Ed25519 signature check against a
|
||||
public key compiled into the build, fully offline.
|
||||
|
||||
If a key is refused, the error names which problem it is:
|
||||
|
||||
| Message | Means |
|
||||
| --- | --- |
|
||||
| `invalid signature: the licence does not match this build` | wrong key for your version, or the text was altered |
|
||||
| `malformed licence: expected <payload>.<signature>` | truncated paste — you need the whole line, dot included |
|
||||
| `that licence expired <date>, before this build was released` | key predates your install; ask for a reissue |
|
||||
|
||||
## Keeping the daemon alive
|
||||
|
||||
Use `standup service` rather than touching systemd, launchd or Task Scheduler
|
||||
yourself. One set of commands, three platforms:
|
||||
|
||||
```sh
|
||||
standup service install # install and enable at login
|
||||
standup service start
|
||||
standup service status
|
||||
standup service restart
|
||||
standup service stop --code <operator code>
|
||||
standup service uninstall --code <operator code>
|
||||
```
|
||||
|
||||
Under the hood that's a systemd `--user` unit on Linux, a launchd agent on
|
||||
macOS, and a scheduled task on Windows. `stop` and `uninstall` are
|
||||
operator-only, so they want `--code`.
|
||||
|
||||
The installer runs `service install` and `start` for you on first run.
|
||||
|
||||
### Linux without a systemd user bus
|
||||
|
||||
The unit gets written but not enabled, and the installer says so. **On WSL2**,
|
||||
systemd is usually just off:
|
||||
|
||||
```sh
|
||||
# add to /etc/wsl.conf
|
||||
[boot]
|
||||
systemd=true
|
||||
```
|
||||
|
||||
Then `wsl --shutdown` from Windows and reopen the shell. After that
|
||||
`standup service install` works normally.
|
||||
|
||||
**Containers and minimal boxes** may have no user bus at all. Run the daemon
|
||||
directly and keep it up however you already supervise things:
|
||||
|
||||
```sh
|
||||
standup daemon
|
||||
```
|
||||
|
||||
### Checking it's up
|
||||
|
||||
```sh
|
||||
standup status
|
||||
```
|
||||
|
||||
The daemon listens on `127.0.0.1:7335` by default. `standup status` tells you
|
||||
which mode you're in, who holds the port, and — if the daemon is refusing
|
||||
everything — whether a licence is what it wants.
|
||||
|
||||
## Uninstall
|
||||
|
||||
```sh
|
||||
standup uninstall --yes --code <operator code>
|
||||
```
|
||||
|
||||
Add `--purge` to take the data with it.
|
||||
Reference in new issue
Block a user