The Agent Village experience for Edge Esmeralda 2026 (May 30 – Jun 27, Healdsburg, CA).
AgentVillage is the public skills package and onboarding scripts that an agent (running Hermes, OpenClaw, or Claude) loads to participate in the Edge Esmeralda Agent Village. It's a multi-backend package: discovery and intent negotiation through Index Network, knowledge graph through Geo, calendar and directory through EdgeOS. AgentVillage defines what an agent knows, how it authenticates with each backend, and how it interacts with attendees.
Today, capabilities come from Index Network (discovery + intent negotiation). Geo (knowledge graph) and EdgeOS (calendar + directory) are also in scope. Once installed, AgentVillage:
- Runs privacy-first onboarding the first time you message it (greet → ask one data-use consent question covering EdgeOS data and public lookup → require a public social/profile URL before any internet lookup → profile draft → user approval → first signal → silent handle capture →
complete_onboarding). - Prepares a morning brief for 08:00 host-local time with admin-set village announcements, today's EdgeOS calendar highlights, the connections worth your attention, and the asks where you can help. Each night's brief is staged and held for review; it is delivered at 08:00 only after an operator approves it by unblocking the staged card on the board.
- Notifies you when someone accepts a connection on your behalf.
- Curates memory every few days — distills daily notes into long-term
MEMORY.md.
AgentVillage never names the plumbing in chat. You see AgentVillage and (when relevant) your community.
AgentVillage plugs into the EdgeOS portal (the identity + spine), with Portal as the recommended runtime for non-technical attendees. Backends the agent calls: Geo (knowledge graph), Index (negotiation + discovery), and EdgeOS APIs (calendar, directory).
See the project hub for the full diagram and decisions.
workspace/IDENTITY.md— what an AgentVillage agent knows about itself and the villageworkspace/— backend-agnostic agent core (identity, voice, community context, generic operating rules)skills/— per-backend skill bundles registered with OpenClaw via per-bundleSKILL.md. MirrorsEdge-City/agentvillage-skillsas a subtree; today this hosts:skills/index-network/— Index Network MCP procedural knowledge (onboarding ritual, voice exemplars, cron prompts, heartbeat tasks)skills/edgeos/— backend-generic EdgeOS API recipes (events, RSVPs, venues, attendee directory, own profile). ReadsEDGEOS_BEARER_TOKENandEDGEOS_API_KEYfrom env; popup id is supplied by the active operator skill.skills/edge-esmeralda/— Edge Esmeralda 2026 popup knowledge: popup constants (popup id, week dates, themes), attendee field semantics, the curated wiki/website/newsletter references (vendored fromEdge-City/agentvillage-skills; refreshed by upstream CI every 15 min), and the onboarding pointer for obtaining EdgeOS tokens.skills/geo-esmeralda/— Geo knowledge graph recipes and write guidance for attendee-authored content, relations, ontology, and media.
install/— bootstrap scripts for plugging AgentVillage into a runtime
Two paths:
1. I'm new to agents. Sign up at https://agent-ee26.edgecity.live/ and pick "Set one up for me." Portal provisions a hosted agent with AgentVillage preinstalled. ~5 minutes.
2. I'm self-hosting. Set up Hermes, OpenClaw, or Claude Code, then run the AgentVillage installer from a clone of this repo.
Both paths need EdgeOS tokens (EDGEOS_BEARER_TOKEN and EDGEOS_API_KEY) before the edgeos skill can talk to the calendar, directory, or your own profile. Obtain them by completing the email-OTP flow at <EDGECITY-ONBOARDING-URL>, then pass them to the installer (--edgeos-bearer-token, --edgeos-api-key) or, for non-OpenClaw hosts, set them in your host's env config per its conventions. AgentVillage does not run OTP itself.
TODO: Replace
<EDGECITY-ONBOARDING-URL>with the actual URL once EdgeCity publishes it. Bumppackage.jsonpatch version when done.
The integration API is for Portal and EdgeOS — the two systems that provision agents on behalf of attendees. End users do not call this directly.
All requests use the experiment network's master key as a bearer token:
x-api-key: <masterKey>
The master key is issued once when the experiment network is created in the Index Network dashboard and is never re-shown. It is server-side only — never expose it in the EdgeOS portal frontend, user-visible config, the public repo, or attendee-facing copy-paste.
The master key can be rotated from the integrations tab of the network's settings page in the Index Network dashboard. Rotation issues a new plaintext key (shown once) and emails it to every owner of the network; the previous key is invalidated immediately. Use this when the key is lost or to revoke an existing one.
Provisions (or re-provisions) an attendee's Index Network account and returns an API key bound to a network-scoped agent. No email is sent — the caller is responsible for delivering the key to the attendee.
Request
POST https://protocol.index.network/api/networks/<NETWORK_ID>/signup
Content-Type: application/json
x-api-key: <masterKey>
Body (email is the only required field):
{
"email": "alice@example.com",
"name": "Alice Example",
"bio": "Independent researcher on coordination problems.",
"location": "Healdsburg, CA",
"socials": [
{ "label": "telegram", "value": "@alice" },
{ "label": "twitter", "value": "alice_eg" }
]
}| Field | Required | Max | Notes |
|---|---|---|---|
email |
yes | — | Lowercased + trimmed. |
name |
no | 200 chars | Overwrites stored name when present. |
bio |
no | 2000 chars | |
location |
no | 200 chars | |
socials |
no | 32 entries | Open vocabulary — any string labels (telegram, twitter, github, farcaster, …). Upserted by label. |
Response
{
"user": { "id": "<uuid>", "email": "alice@example.com" },
"apiKey": "ix_...",
"mcpServer": {
"name": "index",
"url": "https://protocol.index.network/mcp",
"headers": { "x-api-key": "ix_..." }
}
}HTTP 201 if the user was newly created; 200 if they already existed.
mcpServer is the standard MCP server config object that OpenClaw reads on startup.
Idempotency
Every call with the same email returns the same user but a fresh API key — the previous key is revoked. Store the key returned by the latest call. If the integrator retries before delivering the key to the attendee, the retried call's key supersedes the earlier one.
Errors
| Code | Reason |
|---|---|
| 400 | Missing or invalid email; oversized field; malformed socials array. |
| 401 | Missing x-api-key header. |
| 403 | Master key invalid; network not in experiment mode; network deleted. |
- Runs the AgentVillage installer with the returned
apiKey:bun install/install.ts --index-api-key <apiKey>(or equivalent in the hosted runtime). If Portal knows the attendee's Telegram handle, it passes it as--telegram-handle @handleso every Telegram-surface Index MCP request carriesx-index-telegram-usernameand self-heals the user's public Telegram social. If Portal has also fetched an EdgeOS personal access token for the attendee, it passes that on the same line:bun install/install.ts --index-api-key <apiKey> --telegram-handle @handle --edgeos-api-key <eos_live_…> --edgeos-bearer-token <jwt>. - If Portal learns or changes the attendee's Telegram handle later, it should rerun the installer or update
mcp_servers.index.headers.x-index-telegram-usernamein the host config.
Displays per-host install commands with the attendee's credentials pre-filled. The attendee copies and runs them in their terminal. EdgeOS also completes the email-OTP flow to obtain EDGEOS_BEARER_TOKEN and EDGEOS_API_KEY, which are included in the install commands.
Claude Code:
export INDEX_API_KEY=<apiKey>
export EDGEOS_BEARER_TOKEN=<jwt>
export EDGEOS_API_KEY=<eos_live_…>
claude plugin marketplace add Edge-City/agentvillage-skills
claude plugin install agentvillage@agentvillage-skillsOpenClaw:
openclaw plugins install agentvillage --marketplace Edge-City/agentvillage-skills
openclaw config set mcp.servers.index '{"url":"https://protocol.index.network/mcp","transport":"streamable-http","headers":{"x-api-key":"<apiKey>","x-index-surface":"telegram","x-index-telegram-username":"@handle"}}'
openclaw config set env.vars.EDGEOS_BEARER_TOKEN '<jwt>'
openclaw config set env.vars.EDGEOS_API_KEY '<eos_live_…>'
openclaw gateway restartHermes:
hermes skills install Edge-City/agentvillage/skills/edge-esmeralda --force
hermes skills install Edge-City/agentvillage/skills/edgeos --force
hermes skills install Edge-City/agentvillage/skills/index-network --force
hermes config set mcp_servers.index.url 'https://protocol.index.network/mcp'
hermes config set mcp_servers.index.headers.x-api-key '<apiKey>'
hermes config set mcp_servers.index.headers.x-index-surface 'telegram'
hermes config set mcp_servers.index.headers.x-index-telegram-username '@handle'
hermes config set EDGEOS_BEARER_TOKEN '<jwt>'
hermes config set EDGEOS_API_KEY '<eos_live_…>'Claude Desktop / other MCP clients: displays the mcpServer JSON with the API key baked in.
See skills/README.md for the full per-host reference.
-
OpenClaw installed and configured (
openclaw onboard --mode localoropenclaw setup). -
An API key for the Index protocol. Generate one on your agents page at index.network (or your community-branded node).
-
Bun — the installer is a Bun script (Node 20+ also works if you swap the shebang).
-
Node 20+ with npm/npx available to run the Geo CLI recipes.
-
(Optional) EdgeOS tokens, if you want live event/attendee recipes to work without per-query prompting:
EDGEOS_API_KEY— long-livedeos_live_…automation key, minted via the EdgeCity onboarding flow (see the "EdgeOS tokens" section above). Unlocks the calendar/RSVPs/venues recipes inskills/edgeos/SKILL.md.EDGEOS_BEARER_TOKEN— human session JWT obtained via the same email-OTP flow. Unlocks the directory, own-profile, and OpenAPI-spec recipes.
Both are optional from AgentVillage's perspective. Without them the agent still runs; EdgeOS recipes will just ask the user for the missing token on first use per the SKILL.md instructions.
From a clone of this repo:
bun install/install.ts --index-api-key <YOUR_API_KEY>If this AgentVillage runtime is serving the user through Telegram, include their public Telegram handle. The installer stores it in the Index MCP headers so any Telegram-surface interaction can upsert the user's reachable Telegram social without waiting for onboarding:
bun install/install.ts --index-api-key <YOUR_API_KEY> --telegram-handle @handleTo target the dev environment (keys generated on dev.index.network), pass --dev:
bun install/install.ts --index-api-key <YOUR_DEV_API_KEY> --devOr override the MCP URL explicitly via INDEX_MCP_URL=…. Without either, the installer points at https://protocol.index.network/mcp (production).
To wire the optional EdgeOS tokens at the same time, pass them as flags:
bun install/install.ts \
--index-api-key <YOUR_API_KEY> \
--edgeos-api-key eos_live_… \
--edgeos-bearer-token eyJ…The morning digest runs as two fixed crons — prepare at 0 2 * * * and send at 0 8 * * * (host-local). To install them at different times (a different timezone, a test window, etc.), pass full 5-field cron expressions. A flag wins over the matching env var; an invalid expression is ignored with a warning and the default is kept.
# via flags
bun install/install.ts --index-api-key <YOUR_API_KEY> \
--digest-prepare-cron "0 3 * * *" \
--digest-send-cron "0 9 * * *"
# or via environment
DIGEST_PREPARE_CRON="0 3 * * *" DIGEST_SEND_CRON="0 9 * * *" \
bun install/install.ts --index-api-key <YOUR_API_KEY>| Cron | Flag | Env var | Default |
|---|---|---|---|
| Prepare pass | --digest-prepare-cron "<expr>" |
DIGEST_PREPARE_CRON |
0 2 * * * |
| Send pass | --digest-send-cron "<expr>" |
DIGEST_SEND_CRON |
0 8 * * * |
The installer writes any tokens it finds into env.vars.* in ~/.openclaw/openclaw.json; on the next gateway start they become process-env on the gateway and inherit into the agent's shell tool, so curl -H "Authorization: Bearer $EDGEOS_API_KEY" recipes and Geo CLI commands work without further plumbing.
The installer:
- Writes
mcp.servers.indexin~/.openclaw/openclaw.json, pointed athttps://protocol.index.network/mcpwith your API key inx-api-key. - If
--edgeos-api-keyand/or--edgeos-bearer-tokenare passed, writes each toenv.vars.<NAME>so the gateway exposes them to the agent's subprocesses on its next start. - Leaves Geo CLI execution to the skill recipes, which run the public package through
npx. - Sets
channels.telegram.streaming.mode = offso OpenClaw doesn't dump per-tool status drafts into your chat. - Copies the workspace markdown bundle into
~/.openclaw/workspace/.USER.mdis preserved on re-install (it holds the lived notes the active skill's bootstrap ritual populated for you); pass--wipe-userto overwriteUSER.mdand delete the agent-curatedMEMORY.md, OpenClaw'sworkspace-state.jsonfirst-run marker, and the local onboarding/welcome/cron-preference markers undermemory/so the next session re-onboards from scratch. - Copies backend skill bundles from
skills/into~/.openclaw/workspace/skills/so OpenClaw registers them as workspace skills. - Installs the two digest cron jobs: a prepare pass (
0 2 * * *) that composes the morning brief and stages it as an editable Kanban task, and a send pass (0 8 * * *) that delivers the staged brief. The prepare pass stages each brief as a blocked Kanban task; the send pass delivers it only after an operator approves it by unblocking that task (hermes kanban unblock <id>or the board's unblock control), so accidental delivery is prevented without pausing the cron. The end user can't change the schedule from chat, but the installer can override both times via--digest-prepare-cron/--digest-send-cron(orDIGEST_PREPARE_CRON/DIGEST_SEND_CRON) — see "Overriding the digest cron times" above. - Restarts the gateway so all config changes take effect.
Send any message in your chat to bring AgentVillage online. AgentVillage has two independent setup gates with different triggers:
- AgentVillage welcome — runs on private-DM first message before any other reply/tool work, is owned by
workspace/AGENTS.md"First-message gates", and is gated by the local durable markermemory/welcome-state.json. Hermes sessions can reset daily or after idle time, so the welcome must not key off session freshness. If the marker sayswelcomeSent: true, the agent skips the welcome and answers normally. Normal installer/update runs snapshot this marker, restore it if it is deleted, and repair clobbered content when the previous marker suppressed the welcome; only--wipe-userintentionally removes it. - Index Network onboarding — runs only when the user expresses social intent (meeting people, connecting, finding others, being matched), not on unrelated first messages. It is gated on the server-side
onboardingCompleteflag returned byread_user_profiles()and owned byskills/index-network/bootstrap.md. If triggered andonboardingCompleteisfalse, the privacy-first ritual runs (ask one data-use consent question covering EdgeOS/event profile data and public lookup → only run internet lookup when an explicit or allowed public social/profile URL is available → draft profile withpreview_user_profile, pollingget_profile_runwhen aprofileRunIdis returned → show it for approval → save withconfirm_user_profile→ capture first signal → capture handle →complete_onboarding()→ populateUSER.md).
An admin resetting onboardingComplete server-side re-triggers only the Index ritual. Wiping local state via install/install.ts --wipe-user resets local markers without touching Index's flag.
To tear down AgentVillage and start fresh (leaves Telegram token, OpenRouter key, and gateway config untouched):
bun install/reset.tsThen re-install:
bun install/install.ts --index-api-key <YOUR_API_KEY>Pass --wipe-user to also remove USER.md, MEMORY.md, and the entire memory/ directory — including agentvillage-state.json, welcome-state.json, daily notes, and any other local memory files — so the next message can run the first-install gates again:
bun install/reset.ts --wipe-userTime-sensitive prompts (the morning digest's prepare pass at 02:00 and send pass at 08:00 — host-local) run as OpenClaw cron jobs, not heartbeat tasks. Cron has its own scheduler and runs in isolated sessions with --light-context so each tick is cheap. Cron jobs are installed by install/install.ts and restart with the gateway. Future per-backend skills can add their own cron prompts the same way.
Accepted-opportunity notifications, freshness audits, memory curation, and any other latency-tolerant background work stay on the heartbeat tick because 30-minute latency is acceptable for those flows.
| File | Purpose |
|---|---|
AGENTS.md |
Canonical session-start instructions plus operating rules. Hosts the dual onboarding gates (skill-side + AgentVillage-side), the cron-schedule trigger, memory contract, opportunity-quality bar, red lines, and group-chat rules. Always injected by OpenClaw. |
BOOTSTRAP.md |
OpenClaw convention for the first-run file. AgentVillage ships only a stub pointing to AGENTS.md here, because OpenClaw deletes BOOTSTRAP.md after first-run setup — anything stored in it is not durable. |
COMMUNITY.md |
Edge Esmeralda context — dates, attendee count, programming format, design principles. The agent reads this when composing welcomes and digests. |
SOUL.md |
Voice, banned vocabulary, "never name the plumbing", boundaries, continuity. |
IDENTITY.md |
AgentVillage identity — role, context, tone. |
USER.md |
Lived notebook — populated by the active skill's bootstrap ritual from the user's onboarding answers. |
TOOLS.md |
Cross-backend rules: channel formatting (Discord/WhatsApp/Telegram), URL preservation, Local files index. Per-backend tool families live in the relevant skill. |
HEARTBEAT.md |
Generic heartbeat tick rules + the cross-backend memory-curation task. Backend-specific tasks live in each active skill's heartbeat.md. |
skills/index-network/SKILL.md |
Index Network skill bundle entry point. Registered with OpenClaw on install; gates on mcp.servers.index. Body points at the bundle's sibling reference files. |
skills/edgeos/SKILL.md |
EdgeOS-API skill: events + attendee directory + curated wiki/website/newsletter references. Currently scoped to Edge Esmeralda 2026. Loaded by OpenClaw alongside index-network. Vendored from Edge-City/agentvillage-skills. |
skills/geo-esmeralda/SKILL.md |
Geo knowledge graph skill: community content, relations, ontology, and attendee-authored writes through the Geo CLI package. |
AgentVillage's behaviour is markdown-driven. Almost everything you'd want to change lives in workspace/ or skills/<backend>/. This section maps common customizations to the file that owns them.
Deploy cycle. All edits go into this repo. The agent only sees them after install/install.ts runs again, since the installer copies workspace/ and skills/ into ~/.openclaw/workspace/. Re-running without --wipe-user preserves the attendee's USER.md, MEMORY.md, and onboarding markers — safe for content/tone edits. The installer also snapshots an existing memory/welcome-state.json marker, restores it if a normal update deletes it, and repairs clobbered content when the previous marker suppressed the welcome. Use --wipe-user only when you want the next session to re-onboard from scratch. Existing installs must reinstall the package to copy updated privacy-first onboarding markdown into the Hermes/OpenClaw workspace.
| You want to… | Edit | Notes |
|---|---|---|
| Tighten or loosen overall voice (more analytical / more playful) | workspace/SOUL.md |
The "voice" rules apply to every message the agent composes. Voice exemplars in skill bundles inherit from here. |
| Change banned vocabulary (e.g. drop a word, ban a new one) | workspace/SOUL.md |
Bans propagate to all skill prompts via SOUL.md. |
| Change the canonical look of welcome / digest messages | skills/index-network/exemplars.md |
These exemplars are the bar the agent imitates. Edit the literal sample messages, not abstract rules. |
| Rename the agent (rebrand for another event) | workspace/IDENTITY.md + every prompts/*.md and bootstrap.md referring to "AgentVillage" |
Grep AgentVillage under workspace/ and skills/. Also update COMMUNITY.md and package.json name if forking. |
| Add or change emoji conventions | skills/index-network/exemplars.md and skills/edge-esmeralda/prompts/*.md |
Exemplars set the look; the morning greeting is fixed in prepare.md / send.md. |
| You want to… | Edit | Notes |
|---|---|---|
| Update community facts (dates, headcount, venue, programming format) | workspace/COMMUNITY.md |
This is the only authoritative source the agent reads for community context. Don't duplicate the facts into prompts. |
| Change what the morning brief says or how it's structured | skills/edge-esmeralda/prompts/prepare.md (compose), skills/index-network/scripts/build-daily-brief-context.ts (structured announcements/calendar/opportunity context), and skills/edge-esmeralda/prompts/send.md (deliver + fallback) |
The morning greeting is fixed in both. Keep the announcements/calendar/people/community-asks structure in sync with skills/index-network/exemplars.md. |
| Change the welcome message | workspace/AGENTS.md "First-message gates" |
The welcome is gated by memory/welcome-state.json and should run once per install, not once per Hermes session. |
Change the lived-notebook (USER.md) template |
skills/index-network/bootstrap.md |
The bootstrap ritual writes USER.md. Editing the file in workspace/ only affects the empty stub copied in by --wipe-user. |
| Change how the agent calls EdgeOS APIs (events, attendees, RSVPs, venues, wiki recipes) | skills/edgeos/SKILL.md |
This is the hand-edited recipe file. The auto-refreshed reference data under skills/edgeos/references/ is a different surface — see "Backends & skills" below for the don't-edit-this caveat. |
| You want to… | Edit | Notes |
|---|---|---|
| Add, remove, or reorder operating rules (memory contract, opportunity quality bar, red lines, group-chat rules) | workspace/AGENTS.md |
This file is always injected by OpenClaw on every session — durable, unlike BOOTSTRAP.md. |
| Add a new first-message gate (e.g. another skill needs onboarding) | workspace/AGENTS.md "Active skills" section + the new skills/<name>/bootstrap.md |
Gates loop over the active-skills registry. Add the skill row first, then point its bootstrap at the trigger condition (server flag, local marker, …). |
| Change the returning-user first-message framing | workspace/AGENTS.md "First-message gates" |
The digest schedule is fixed (set in install/install_index.ts) and not adjustable from chat. |
| Change heartbeat tick behaviour (what tasks fire, dedup rules) | workspace/HEARTBEAT.md for cross-backend rules; skills/<backend>/heartbeat.md for backend-specific tasks |
The tick cadence itself (default ~30 min) is an OpenClaw-side setting, configured through openclaw config — not a file in this repo. |
| Change how URLs / formatting render per channel (Telegram, WhatsApp, Discord) | workspace/TOOLS.md |
Cross-backend rule: Telegram is Markdown, not HTML — raw <…> tags get escaped. |
The digest runs as a fixed prepare/send pair — prepare 0 2 * * *, send 0 8 * * * (host-local) — and the end user can't change it from chat. The installer can override either time (see "Overriding the digest cron times" under Install).
| You want to… | Edit | Notes |
|---|---|---|
| Override the digest times for one install | --digest-prepare-cron / --digest-send-cron (or DIGEST_PREPARE_CRON / DIGEST_SEND_CRON) |
Optional, full 5-field cron expressions. Flag wins over env; invalid values fall back to the default. |
| Change the default digest schedule for everyone | install/install_index.ts (DIGEST_CRON_SPECS) |
The installer writes the cron entries from this table. Existing installs pick up changes on the next install.ts run. |
| Change a cron prompt without changing the schedule | the matching skills/edge-esmeralda/prompts/<name>.md |
Hermes stores prompt copies in cron jobs. Hosted residents are refreshed by the control-plane post-merge sync, which calls each sidecar's /update endpoint and reruns the installer. For non-control-plane installs or recovery, run HERMES_HOME=<resident-home> bun install/reconcile_digest_crons.ts after updated skill files are copied. |
| You want to… | Edit | Notes |
|---|---|---|
| Wire a brand-new backend | new install/install_<name>.ts (modeled on install_index.ts for MCP+cron wiring, install_edgeos.ts for env-token wiring, or install_geo.ts for CLI runtime guidance) + new skills/<name>/ bundle with SKILL.md + register in workspace/AGENTS.md "Active skills" |
Add the installer call to install/install.ts and include the skill in EDGE_SKILL_NAMES so it is copied into the runtime workspace. |
| Extend an existing backend (Index, EdgeOS, Geo) | The matching install/install_<name>.ts and skills/<name>/ bundle |
Runtime config (env vars, MCP entries, cron jobs, CLI commands) lives in install_<name>.ts; agent-facing instructions live in the skill bundle's SKILL.md and siblings. |
| Wire optional env vars an existing backend needs | install/install_<name>.ts + the Prerequisites section of this README |
The installer writes env.vars.<NAME>; the gateway exposes those to the agent's shell tools on next start. install_edgeos.ts is the worked example. |
| Change which skills the agent loads | workspace/AGENTS.md "Active skills" section |
Mark a skill as eager (gates fire at session start) or reactive (only consulted when needed). |
Update the vendored edgeos reference data (events, attendee directory, wiki snapshots) |
Don't — it's auto-refreshed from upstream | Upstream CI in Edge-City/agentvillage-skills regenerates skills/edgeos/references/ every 15 minutes; the change propagates through the nested subtree chain. See the monorepo's CLAUDE.md for the sync flow. The recipes in SKILL.md are hand-edited — see the "Content" section above. |
Skills in this repo are public. Each backend gates access with its own per-user credential, wired in by the matching per-backend installer:
- Index Network (today's wired backend) — per-user API key returned by
POST /api/networks/:id/signup(see Integration API: Authentication above).install/install_index.tswrites it intomcp.servers.indexas thex-api-keyheader. - EdgeOS — per-user tokens issued via OTP through the EdgeOS portal.
install/install_edgeos.tswritesEDGEOS_API_KEYandEDGEOS_BEARER_TOKENinto the runtime environment when provided. - Geo — uses the attendee's
EDGEOS_BEARER_TOKENand the Geo CLI package. Skill recipes run it throughnpx.
The skill files describe HOW to call each backend's APIs; the per-backend credential is what unlocks them.
Maintained by the Edge City and YoursTruly teams. Direct push access is limited to project collaborators; PRs from the community are welcome and will be reviewed.
- Edge Esmeralda 2026: https://edgeesmeralda.com
- Substack post: https://edgeesmeralda2026.substack.com/p/the-agent-village-experiment-at-edge
MIT. See LICENSE.