team-server
Skill218 starsChanged todayMITView on GitHub
Run the self-hosted team server in Docker for local testing, renew its first-owner setup link, or stop a test stack without touching personal Opensteer.
- Reads credentials
In this repository10 other files it gives its agents.
- AGENTS.mdAGENTS.md
- agent-phoneSkill
- browser-and-passwordsSkill
- desktop-buildsSkill
- mac-guiSkill
- mobileSkill
- run-agent-evalsSkill
- setupSkill
- testingSkill
- upgrade-enginesSkill
The file
We split this skill into the rules it gives an agent
6 rules. About 0 are common, 4 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 8
Read Teams for authority and version boundaries and the deployment recipe for production scheduling.
- Very specific: line 10
Use a dedicated disposable checkout and fresh volumes.
- Very specific: line 15
Use Docker Compose v2. Run bash deploy/team/setup.sh once to create config.env, then edit it for the test HTTPS origin.
- Distinctive: line 40
Keep volumes until evidence is collected.
- Distinctive: line 60
After success or failure, refresh the IDs for this owned Compose project, then stop and remove each captured container by ID.
- Distinctive: line 72
Use Bash for these snippets.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Team server
Read Teams for authority and version boundaries and the
deployment recipe for production scheduling.
Use a dedicated disposable checkout and fresh volumes. Never use the live install or
~/Opensteer. No screen driving, real accounts or credentials in test fixtures.
Local Docker test
Use Docker Compose v2. Run bash deploy/team/setup.sh once to create config.env,
then edit it for the test HTTPS origin. First-owner Account adoption needs a public
HTTPS origin (a public hostname or Tailscale Funnel); a private-only tailnet origin
cannot pass Account's public proof fetch. No Connect for teams in v1.
setup.sh provisions secrets and runs the newest published release of the configured
channel; disable its updater as described in the recipe. To test unreleased source instead,
do not run setup.sh again: create the secrets and run locally built images under a local version:
bash deploy/team/secrets.sh init deploy/team/secrets
for target in host team-gateway; do
docker build -f deploy/container/Containerfile --target "$target" \
--build-arg OPENSTEER_AGENT_PHONE_MODE=none \
--build-arg OPENSTEER_RELEASE_VERSION="$(node -p 'require("./package.json").version')" \
--build-arg OPENSTEER_SOURCE_REVISION="$(git rev-parse HEAD)" \
-t "ghcr.io/steerlabs/opensteer-team-${target#team-}:local" .
done
export OPENSTEER_TEAM_VERSION=local
source deploy/team/common.sh
compose up -d --wait --pull never
team_container_ids=$(compose ps -aq)Capture container IDs even after a partial start, and stop only those containers. Keep volumes until evidence is collected. Never stop another test's stack by name.
Renew first-owner setup
The first-owner token expires 24 hours after initialization; restarting with the same token preserves that deadline. On an unclaimed disposable team only, replace the token and recreate the Host, because Compose secrets mount the old file. In the same shell:
bash deploy/team/secrets.sh renew deploy/team/secrets
compose up -d --force-recreate --wait host
team_container_ids=$(compose ps -aq)Open the new /setup#<token> link privately on the configured team origin; never
put it in logs or evidence. Setup cannot claim a server that already has an owner.
Re-running setup without rotating the token does not renew an expired admission.
Stop
After success or failure, refresh the IDs for this owned Compose project, then stop and remove each captured container by ID. Do not remove volumes unless disposing of this test's data was requested.
team_container_ids=$(compose ps -aq)
for team_container_id in $team_container_ids; do
docker stop "$team_container_id"
docker rm "$team_container_id"
doneUse Bash for these snippets. Report setup, link renewal and shutdown separately; starting containers proves no end-to-end team journey.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

