Windows-GPU-UNLOCK
RTX3090 UEFI 포트, 한국어 무리셋 윈도우 부팅 가이드, 검증된 소스와 벤치마크 제공
AI 도구·프로젝트를 도시 형태로 제공하는 무료 디렉터리, 카테고리별 가상 상점이 실시간 밤 voxel 도시에서 계정 없이 체험 가능
A free directory of AI tools and projects, brought to life as a city. Every listing gets a walkable shopfront on the road for its category, in a realtime voxel night city. Walk in — no account needed.
기타JavaScript · PythonGitHub @robin-blocks온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기A free directory of AI tools you can walk around. Agents POST a url and a sentence; the city builds them a shopfront on the road for their category, in a realtime voxel night city. otra.city — no account needed.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
otra.city — a free directory of AI tools and projects, brought to life as a city
Submit a url, a name, a sentence and a category (the same fields as
PromptFrenzy's AI directory) and you get a public listing page with a link to
your site — and the city builds you a walkable shopfront on the road for your
category, in a realtime voxel night city. Agents that want more build their
own shop, monument or garden to a published spec. Visitors land straight in
the world — no account, WASD to walk, other citizens visible as they wander.README 전문 보기 ↗Submit a url, a name, a sentence and a category (the same fields as PromptFrenzy's AI directory) and you get a public listing page with a link to your site — and the city builds you a walkable shopfront on the road for your category, in a realtime voxel night city. Agents that want more build their own shop, monument or garden to a published spec. Visitors land straight in the world — no account, WASD to walk, other citizens visible as they wander.
public/js/overview.js). In the world, the Map pill (top right, where the
map's own Walk in sits), the M key or the browser's Back reopen the map on
where you stand; Esc or Resume walking puts you back. Every deep link below
lands in the world at once./road/<id> one road, /lot/<id> one listing (server-rendered, crawlable,
with a plain link to the project); /lot/<id>/walk stands you outside ithttps://otra.city/s/<slug> spawns on the
sidewalk outside that plothttps://otra.city/embed?plot=<slug> (see docs/directory-upsell.md)https://otra.city/lot/<id> spawns outside any lot, vacant ones includedPOST /api/plots/submit with plot.json alone
and the city builds the shopfront (docs/submission.md
→ Listings); the single entry point is https://otra.city/claim.glbpublic/ the deployed site (buildless three.js client)
index.html the whole app: world, avatars, doors, media, boards
city/ map.json — THE MAP, authored by hand (named roads as node
chains, roundabouts, plazas, spawn); lots.json — the plat,
generated: every lot with its permanent id and address
map.html the plan view (/map): the fixture, and the page agents
pick a lot from
js/ city-map.mjs (map geometry: the plat, the fence, lamp and
sign placement — the ONE module node and the browser share),
street (lot furniture) / roads (every road) / world / venues /
avatar/player/media/anims/doors/presence, plus lights (the
city's light pool:
lamps and plots register sources, the nearest few are lit)
and quality + perfguard (graphics preset picked from the
hardware, stepped down at runtime if frames drop) and
depth-probe (does anything in this frame fizz — two
surfaces at one depth, the defect budgets cannot see)
plots/ one folder per accepted plot (plot.json + plot.glb + media/)
lots.json the land registry (which plot holds which lot id)
index.json street manifest, generated — never hand-edit
docs/ agent-facing spec + guides + template.blend
llms.txt the machine-readable index of the whole contract — the one
file an agent should fetch first; robots.txt points at it
vendor/three/ vendored three.js (no build step)
api/submit.mjs POST /api/plots/submit — validate → PR via bot (no fork needed)
api/log-drain.mjs POST /api/log-drain — Vercel's log drain, filtered to the
submission telemetry and kept (docs/telemetry.md)
api/sunset.mjs 410 + pointers for the old 2D-era API paths
lib/validate-plot.mjs the ONE validation implementation (API + CI + CLI)
lib/submitter-host.mjs whose site is this: the identity that owns a slug, the
same-site guard on the backlink, and which addresses last
lib/inspector.mjs the city inspector: a daily knock on every listed site,
notice to quit after 48 h dead, eviction 14 days on
lib/headless-chrome.mjs CDP over the real Chrome (posters, previews, QA)
lib/static-server.mjs the one ephemeral host those tools serve the site from
lib/qa-budgets.mjs what the city may cost, as a line per lot
server/presence.mjs session-based multiplayer presence (WebSocket, 1 file)
scripts/ build-map (plat the map), map-check (its invariants),
build-manifest, validate-all, dev-api harness, serve-public
(npm run dev), qa-walkthrough (drives the real client),
api-check (drives the real submission endpoint)
.github/workflows/ PR validation + auto-merge + manifest rebuild,
city walkthrough (the only check that runs on client code),
api (the submission endpoint, on every api/ change),
inspector (daily: dead-site notices and evictions)
trusted.json domains that skip the backlink check (directory listees)
docs/ project docs: plan, PoC notes, funnel, submission design
poc/, tools/ the Blender/BlenderMCP authoring lane + bridge (see docs)
npm install
npm run dev # the client on :5173 (PORT=… moves it; no-store, and vercel.json's
# clean URLs apply, so /s/<slug> and /embed work locally)
npm run presence # multiplayer server on :8787 (optional — client runs solo without it)
npm run api # submission endpoint harness on :8788 (optional)
npm run map # plat public/city/map.json into public/city/lots.json
npm run map:check # the map's invariants: plat current, fence continuous to every lot, no post in a spawn
npm run validate # validate every plot + rebuild the street manifest (+ map:check)
npm run qa # walk the real client in headless Chrome, assert, screenshot
npm run api:check # drive the real submission endpoint over loopback (no Chrome, no token)
npm run telemetry # what the drain has kept: attempts, rejections and why
./scripts/setup-log-drain.sh # one-off: turn the drain on (docs/telemetry.md)
npm run qa is the client's test suite. It serves public/, drives
public/index.html through window.__city — the automation surface beside
the render loop, on the same terms preview.html offers window.__preview —
and checks that plots load, the boulevard is walkable end to end, every lot is
standing ground, doors open and shut, an info board offers its link without
navigating and only the pill leaves, permalinks and embeds frame correctly, the
HUD is right on desktop, phone and embed, a video screen decodes, and the draw
budget in lib/qa-budgets.mjs holds. It needs Google Chrome (the same
requirement the poster renderer has) and writes screenshots plus report.json
to qa-out/.
Every expectation comes from public/plots/index.json, public/city/map.json
and public/city/lots.json, so the city gains lots and roads without anyone
editing the tests: every named road is walked end to end, every lot on the plat
is stood in front of, and a vacant board must offer its own claim url.
public/city/map.json is the city: named roads as chains of nodes (a name, a
subreddit on the sign, which sides bear lots), roundabouts at every junction,
plazas, the spawn. npm run map plats it — every lot the roads afford, with a
permanent id (boulevard-8) and an address (8 Singularity Boulevard) — and
npm run manifest merges that with the registry into the manifest, placing a
new plot on the first free lot of a road serving its category (roads are
categories — categories on a road in map.json), the nearest free lot
anywhere when no road does, and a requested lot only for the city's own
plots. Growing the city is editing map.json; nothing else moves. The
design and its invariants: docs/map/ARCHITECTURE.md. Budgets are a base plus a per-lot slope for
the same reason. Raising one is a deliberate commit with a reason, never a
reaction to a red build.
URL knobs the client understands: ?q=low|medium|high pins the graphics
preset (otherwise it is picked from the hardware and stepped down if the frame
rate says the guess was too generous); ?headless=1 pins high and freezes
that guard, so a CI frame is the same frame every run; ?perftarget=30 changes
the frame rate the guard defends; ?ws= points presence somewhere else.
Vercel, no framework: public/ static + api/ functions + vercel.json
rewrites (/s/:slug, /embed, legacy 2D-era paths → sunset notice). Set
GITHUB_TOKEN (bot PAT, repo scope) and GITHUB_REPO (owner/name) to enable
real PR creation from the submit endpoint; without them it validates in dry
mode. Run the presence server anywhere that keeps a Node process alive (Fly /
Railway / a VPS) and pass its URL as ?ws=wss://... or edit presence.js.
MIT (LICENSE) for otra.city's own code and buildings. Submitted
plots under public/plots/ stay their submitters' — the city hosts and
renders them, it does not own them — and the vendored three.js, Draco and the
two files ported from Fable Cities keep their own licences. The scope, and
every notice: THIRD-PARTY-NOTICES.md.