ergo-irc
Skill1 starsChanged 50 days agoMITView on GitHub
Operate the fleet Ergo IRC server — check status, unban IPs, rehash config, diagnose connection issues. NEVER retry connections in a loop. Use when IRC agents can't connect, agents drop, or Ergo needs config changes.
In this repository113 other files it gives its agents.
- AGENTS.mdAGENTS.md
- ac-ideateSkill
- ac-listSkill
- ac-roadmapSkill
- agentbridge-mcpSkill
- almanacSkill
- almquist-shellSkill
- ansible-fleetSkill
- apfsSkill
- apple-siliconSkill
- arena-actorsSkill
- asustor-nasSkill
- a-teamSkill
- atem-miniSkill
- at-tuiSkill
- autoresearchSkill
- babysitSkill
- bonzibuddySkill
- bop-brainstormSkill
- bop-catalogSkill
- bop-onSkill
- bop-teamSkill
- bop-workflowSkill
- bsd-portabilitySkill
- code-refactoringSkill
- codex-personasSkill
- context-graphSkill
- councilSkill
- datadog-backupSkill
- dd-tagsSkill
- delegateSkill
- deming-pdsaSkill
- deterministic-replaySkill
- dispatch-nuSkill
- durable-commitSkill
- elixir-gastown-opsSkill
- esp32-tang-bridgeSkill
- fleet-evalSkill
- fleet-ircSkill
- freebsd-build-vmSkill
- freebsd-piSkill
- freebsdSkill
- ganttSkill
- gastown-opsSkill
- gastown-slingSkill
- gh-authSkill
- gitea-releaseSkill
- gitea-runnerSkill
- henshuSkill
- irclaw-cluster-opsSkill
- irclaw-research-teamSkill
- irc-taskSkill
- jail-factorySkill
- jjSkill
- jobcard-systemSkill
- kubernetesSkill
- leptosSkill
- loreSkill
- lower-bound-reviewSkill
- macvlan-netSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 1 is distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
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 91
If ping works but TCP fails: likely a macvlan L2 issue.
- Very specific: line 136
If MiSTer can ping 10.0.3.203 but TCP fails: macvlan ARP issue.
- Very specific: line 149
Default config: https://raw.githubusercontent.com/ergochat/ergo/master/default.yaml
≈ “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
Ergo IRC Server — Fleet Operations
Container: ergo-irc on QNAS (10.0.2.35)
Hostname: ergo.local (preferred; resolves to 10.0.3.203 via fleet /etc/hosts, see /Users/studio/rust-town/fleet-ops/docs/fleet-local-dns.md)
Macvlan IP: 10.0.3.203 (use only for ARP/neigh/docker debugging, not for client connections)
Ports: 6667 (plaintext), 6697 (TLS)
Config: /ircd/ircd.yaml inside the container
Docker path on QNAS: /share/ZFS530_DATA/.qpkg/container-station/usr/bin/.libs/docker
CRITICAL SAFETY RULES
- NEVER retry connections in a loop. One attempt. Check result. Diagnose if it fails.
- NEVER kill and restart an IRC agent without checking how many instances are running first.
- NEVER run
--versionor any flag on ii-agent that triggers a connection attempt. - If an agent has a built-in reconnect loop (ii-agent does, 120s interval), do NOT add manual retries on top.
- If you get "NetworkUnreachable" or "No route to host", the problem is NETWORK not the agent. Diagnose the network.
- Fleet subnet 10.0.3.0/23 is already exempted from throttling. If fleet agents still can't connect, it's not a ban — it's a network issue.
Quick Reference
# Docker command prefix (QNAS)
DOCKER="/share/ZFS530_DATA/.qpkg/container-station/usr/bin/.libs/docker"
# Check container status
ssh studio@10.0.2.35 "$DOCKER ps | grep ergo"
# View recent logs (excluding connection spam)
ssh studio@10.0.2.35 "$DOCKER logs ergo-irc --tail 50 2>&1 | grep -v 'connect-ip'"
# View connection attempts for a specific IP
ssh studio@10.0.2.35 "$DOCKER logs ergo-irc --tail 200 2>&1 | grep '10.0.2.61'"
# Read config
ssh studio@10.0.2.35 "$DOCKER exec ergo-irc cat /ircd/ircd.yaml"
# Rehash (reload config without restart)
ssh studio@10.0.2.35 "$DOCKER exec ergo-irc kill -HUP 1"
# List connected users (via container exec)
ssh studio@10.0.2.35 "$DOCKER exec ergo-irc cat /ircd/ircd.db" | strings | grep -i nickCurrent Configuration
# Connection throttling
ip-limits:
max-concurrent-connections: 16
throttle-duration: 10m
max-connections-per-duration: 64
exempted:
- "localhost"
- "10.0.3.0/23" # Fleet subnet — ALL fleet agents exempt
# Listeners
listeners:
6667: plaintext
6697: TLS (tls.crt / tls.key in /ircd/)Diagnosing Connection Issues
Step 1: Is Ergo running?
ssh studio@10.0.2.35 "$DOCKER ps | grep ergo"Step 2: Can YOU reach it?
nc -z -w 3 10.0.3.203 6697 && echo "OK" || echo "FAIL"Step 3: Can the FAILING HOST reach it?
ssh <user>@<host> 'nc -z -w 3 10.0.3.203 6697 && echo "OK" || echo "FAIL"'Step 4: Is it an ARP/macvlan issue?
ssh <user>@<host> 'ping -c 1 -W 2 10.0.3.203' # ICMP works?
ssh <user>@<host> 'ip neigh show 10.0.3.203' # ARP resolves?If ping works but TCP fails: likely a macvlan L2 issue. The container's MAC isn't being seen by the host.
Step 5: Check Ergo logs for the failing IP
DOCKER="/share/ZFS530_DATA/.qpkg/container-station/usr/bin/.libs/docker"
ssh studio@10.0.2.35 "$DOCKER logs ergo-irc --tail 100 2>&1 | grep '<failing-ip>'"Step 6: Is the host running MULTIPLE agent instances?
ssh <user>@<host> 'ps aux | grep ii-agent | grep -v grep'If more than 1: kill ALL, wait 60s, start ONE.
Operator Commands (via IRC client)
/oper admin <password> # Login as operator
/UBAN LIST # List all bans
/UBAN INFO <nick> # Get connection details
/UBAN ADD <ip> [duration] [reason] # Ban an IP
/UBAN REMOVE <ip> # Remove a ban
/KILL <nick> # Force disconnect
/REHASH # Reload config
/DEFCON 4 # Restrict registrations (under attack)
/DEFCON 5 # Return to normalEditing Config
- Copy config out:
ssh studio@10.0.2.35 "$DOCKER cp ergo-irc:/ircd/ircd.yaml /tmp/ircd.yaml" - Edit:
scp studio@10.0.2.35:/tmp/ircd.yaml /tmp/ && vi /tmp/ircd.yaml - Copy back:
scp /tmp/ircd.yaml studio@10.0.2.35:/tmp/ && ssh studio@10.0.2.35 "$DOCKER cp /tmp/ircd.yaml ergo-irc:/ircd/ircd.yaml" - Rehash:
ssh studio@10.0.2.35 "$DOCKER exec ergo-irc kill -HUP 1"
What rehash CAN reload: config, TLS certs, MOTD What rehash CANNOT reload: listener ports, database backend (needs restart)
MiSTer-Specific Notes
- MiSTer (de10nano, 10.0.2.61) runs as root — this is correct
- ii-agent binary is ARM 32-bit (armv7), at
/media/fat/linux/ii-agent-mister/ii-agent - The
--versionflag on this binary TRIGGERS A CONNECTION ATTEMPT — do not use it - MiSTer connects PLAINTEXT on port 6667 with
--no-tls. The ARM 32-bit TLS handshake fails. This is the correct config. - Startup command:
nohup /media/fat/linux/ii-agent-mister/ii-agent -n mister-agent -s 10.0.3.203 -p 6667 --no-tls -c "#agents" --no-log > /tmp/mister-agent.log 2>&1 & - If MiSTer can ping 10.0.3.203 but TCP fails: macvlan ARP issue. Fix:
ip neigh replace 10.0.3.203 lladdr 02:42:d5:20:e4:f8 dev eth0 nud permanent
Macvlan Connectivity Issues
The Ergo container is on a macvlan network. Some hosts can't resolve the container's MAC address. Known workarounds:
- From UDM Pro: Ping both the container IP and the failing host IP. This populates ARP tables on the gateway, which can help bridge the path.
- Gratuitous ARP from container:
ssh studio@10.0.2.35 "$DOCKER exec ergo-irc arping -c 3 -A -I eth0 10.0.3.203"(if arping available) - Last resort: Restart the container:
ssh studio@10.0.2.35 "$DOCKER restart ergo-irc"— but this disconnects ALL users.
References
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.

