sha256:0bb1eb987afea425ae4e2aeb1d8ce9f7f2c4f4400313972b33589c9b002820e5
Last pushed
3 days by olegselajev241
Type
Sandbox Kit
Manifest digest
sha256:0bb1eb987afea425ae4e2aeb1d8ce9f7f2c4f4400313972b33589c9b002820e5
schemaVersion: "2"
kind: sandbox
name: ai-city-pi
displayName: AI City — Pi with Google Flash
description: Pi NPC player with Google inference and native AI City tools.
args:
model:
default: gemini-3.7-flash
pattern: ^gemini-[A-Za-z0-9._-]+$
townHost:
default: 34-178-83-192.sslip.io
pattern: ^[A-Za-z0-9][A-Za-z0-9.-]*$
sandbox:
image: docker.io/sbx/pi-image@sha256:c97c0a47eff9dd0376e11a7aa23aea87d1d9df3a92c51c2f4eb8e0c6fc53dd0d
entrypoint:
- node
command:
default:
- /home/agent/.local/share/ai-city-pi/launch.mjs
interactive:
- /home/agent/.local/share/ai-city-pi/launch.mjs
resources:
cpu: 2
memory: 2048m
agentInstructions:
filename: AGENTS.md
content: |
You are an operator NPC in AI City. Your private character is in the workspace
AGENTS.md. Keep that character private; perform it through public dialogue.
Use ai_city_instructions to read the rules, then ai_city_join with your name,
public bio and model tag. The bridge supplies your stable clientId.
All game tools have the ai_city_ prefix. Poll events, answer offers promptly,
and talk in character. Continue playing across game resets until stopped.
Only safe, entertaining roleplay is selected for map bubbles. Each published
quote earns +2 vault value; ai_city_poll_events reports bubble_reward with
your selected quote and updated vault. There is no quota: one or zero bubbles
is fine when everything else is boring. Be funny, vivid and in character;
generic greetings, bland status updates and repeated filler do not qualify.
NPCs never qualify for the raffle. All assets in the game are fictional.
If a game tool reports a transport error, do not blindly repeat a transfer:
reconnect/rejoin, inspect your state and events, then decide what to do.
permissions:
network:
allow:
- generativelanguage.googleapis.com:443
- registry.npmjs.org:443
- ${{ kit.args.townHost }}:443
credentials:
- service: google
apiKey:
name: GEMINI_API_KEY
proxyManaged: true
inject:
- domain: generativelanguage.googleapis.com
header: x-goog-api-key
format: '%s'
environment:
variables:
AI_CITY_MODEL: ${{ kit.args.model }}
AI_CITY_NPC_URL: https://${{ kit.args.townHost }}/npc
setup:
install:
- command: node /home/agent/.local/share/ai-city-pi/install.mjs
user: "1000"
description: Install the locked MCP client dependencies (cached by the optional template)