Eco MCP service - server, jobs, replay, telemetry.
  • Python 66.8%
  • TypeScript 25.1%
  • C# 5.1%
  • CSS 1.6%
  • Shell 0.9%
  • Other 0.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
coilyco-ops 7b5900d4f6
All checks were successful
build-publish / test (push) Successful in 47s
build-publish / frontend (push) Successful in 33s
build-publish / build-image (push) Successful in 4m2s
build-publish / publish-eco-jobs-tracker (push) Successful in 18s
build-publish / publish-eco-replay (push) Successful in 34s
build-publish / publish-eco-store-exporter (push) Successful in 6s
build-publish / publish-eco-telemetry (push) Successful in 7s
chore(pre-commit): advance the aos-precommit pin past the pr-guard lane exemption
This repo declares `ward.workflow: merge-remote-main`, and the pinned pr-guard
predates the fix that stands the guard down on that lane (3d80e355, first
packaged in aos-precommit-v0.50.0). Below that tag the guard refuses the push
that IS this repo's lane.

The full suite passes here at v0.55.0 with no content changes. The managed
.gitattributes block rides along.

Refs coilyco-flight-deck/agentic-os#1383

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Kai Siren <coilysiren@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Agent-Role: platform
2026-08-28 23:27:18 -07:00
.agents/skills/repo-eco-app chore: org-aware repo-pointer skill + agentic-os hooks v0.18.0 2026-06-12 02:51:36 -07:00
.claude feat(mcp): simplify tool names 2026-08-01 18:05:09 -07:00
.forgejo chore(pre-commit): bump the managed block to aos-precommit-v0.34.0 2026-08-20 01:17:12 -07:00
.gauntlet/trials feat: consolidate eco-mcp-app + eco-jobs-tracker + eco-replay + eco-telemetry into eco-app 2026-06-12 02:39:44 -07:00
.github chore(pre-commit): bump the managed block to aos-precommit-v0.34.0 2026-08-20 01:17:12 -07:00
.ward feat(just): retire ward exec, move the verb table to a justfile 2026-08-17 13:39:38 -07:00
data chore(pre-commit): bump the managed block to aos-precommit-v0.34.0 2026-08-20 01:17:12 -07:00
docs chore(pre-commit): bump the managed block to aos-precommit-v0.34.0 2026-08-20 01:17:12 -07:00
frontend feat(just): retire ward exec, move the verb table to a justfile 2026-08-17 13:39:38 -07:00
investigation feat(mcp): simplify tool names 2026-08-01 18:05:09 -07:00
mods chore: use the full name Kai Ase Siren in attribution 2026-08-28 23:24:05 -07:00
scripts chore(pre-commit): bump the managed block to aos-precommit-v0.34.0 2026-08-20 01:17:12 -07:00
src chore(pre-commit): bump the managed block to aos-precommit-v0.34.0 2026-08-20 01:17:12 -07:00
static feat(mcp): simplify tool names 2026-08-01 18:05:09 -07:00
tests feat(just): retire ward exec, move the verb table to a justfile 2026-08-17 13:39:38 -07:00
.dockerignore build: exclude local frontend outputs from image context 2026-07-26 20:53:17 -07:00
.gitattributes chore(pre-commit): advance the aos-precommit pin past the pr-guard lane exemption 2026-08-28 23:27:18 -07:00
.gitignore feat: snapshot dev harness - capture eco data sources, S3 push/pull, offline fixture server (closes #128) 2026-07-20 20:05:26 -07:00
.pre-commit-config.yaml chore(pre-commit): advance the aos-precommit pin past the pr-guard lane exemption 2026-08-28 23:27:18 -07:00
.trufflehog-exclude feat: consolidate eco-mcp-app + eco-jobs-tracker + eco-replay + eco-telemetry into eco-app 2026-06-12 02:39:44 -07:00
_typos.toml chore(pre-commit): bump the managed block to aos-precommit-v0.34.0 2026-08-20 01:17:12 -07:00
AGENTS.md docs(agents): render the managed AGENTS.md git-workflow block 2026-08-25 19:47:45 -07:00
CLAUDE.md feat: consolidate eco-mcp-app + eco-jobs-tracker + eco-replay + eco-telemetry into eco-app 2026-06-12 02:39:44 -07:00
Dockerfile chore: follow AOS release image 2026-07-25 07:20:13 -07:00
justfile feat(just): retire ward exec, move the verb table to a justfile 2026-08-17 13:39:38 -07:00
LICENSE chore: use the full name Kai Ase Siren in attribution 2026-08-28 23:24:05 -07:00
pyproject.toml chore: use the full name Kai Ase Siren in attribution 2026-08-28 23:24:05 -07:00
README.md docs: give the README structure and lead with what it answers 2026-08-23 18:27:34 -07:00
uv.lock feat: add dual REST and MCP route registry 2026-08-01 16:52:09 -07:00

Eco by Strange Loop Games

Banner: Steam header for Eco by Strange Loop Games. Used here for attribution, not my artwork.

eco-app

The companion service for the Sirens Eco server. It turns live world, trade, crafting, civics, and player state into practical answers, for an agent over MCP or a person in a browser.

One fused service

eco_mcp_app is the core, a data-only MCP server reachable over stdio for Claude Desktop and Streamable-HTTP at /mcp/, whose tools return markdown and structured JSON. Tool names are task-shaped and do not repeat the product name, so get_server_status and get_region rather than get_eco_status.

Mounted inside it: the jobs API at /jobs/api, shaping rows out of the in-game skills mod, and eco_replay, a reader over the replay mod's append-only JSONL event log. frontend/ is the Vite, React, and TypeScript SPA the same service serves at /, with /jobs and /replay pages over those two.

The in-game half

mods/ holds the C# Eco server plugins that feed it: jobs for the skills API, replay for the player-action event store, stores for live store and currency export, and telemetry for logs, metrics, and exception capture.

Gameplay mods live in the sibling eco-mods repo, not here. Main CI builds every real mod project and publishes install-ready ZIPs to Forgejo Packages, per docs/mod-packages.md.

The operator surface is separate and bounded

A feature-flagged privileged MCP at /admin is the inside-out operator view. Its fourteen admin_* tools read fixed read-only Eco state mounts and node-local status, plus twelve enum-only observational RCON queries. It has no arbitrary path, no free-form command, and no write capability. The admin_ prefix is a deliberate security-boundary signal rather than namespacing. See docs/admin-mcp.md.

Run it

just http           # the fused server against a live eco target
just http-offline   # the same, against the local snapshot fixture
just frontend-dev   # Vite with HMR on :5173, proxying the API

just alone lists every recipe. Each push to canonical main publishes the fused image as forgejo.coilysiren.me/coilyco-gaming/eco-app:<full-source-sha>, and deploy consumes that exact reference through a separate read-only credential.

See also