README.md
RS-PALANTIR / RS-BLACKROCK
See the world. Find the stock. Understand the economy.
A localhost operations and economic intelligence dashboard for RS-SDK. Follow players through a live 3D world, watch farming hotspots, inspect market demand, and answer the question every growing fleet eventually asks: “Which bot has the thing I need?”
Two connected workspaces, one local app. Frosted controls keep the dense data readable; dither charts make comparisons visible without hiding the numbers.

Install · Use across devices · Connect your project · Feature tour · Agent setup · Contribute
Source preview: the installable community preview lives on GitCafe’s
mainbranch. This is not a stable gameplay release. See release readiness for validation, known issues and distribution gates. Live research needs the public upstream feeds; no private accounts or runtime history are bundled.
Feature tour
Palantir: your window into the world
Build a camera wall around the players and places that matter. Follow a player, switch a tile to a hotspot, rearrange tiles with their drag handles, and keep north-facing aerial views locked while you investigate.
- Search players and switch between player-follow and area cameras in the same tile.
- Jump to mining sites, dungeons, banks and farming routes through 117 hotspot shortcuts.
- Inspect observed equipment and source age; use surface/dungeon dot maps for wider context.
- Scroll through the grid normally. Hold Alt/Option + scroll to zoom a hovered camera.
- Keep the live server population visible across both workspaces.
Focus on your friendlies
Keep the camera on your farms while filtering out unrelated players. This Ardougne capture shows the owner’s Z bots with Friendlies only enabled; NPCs remain visible. Your installation builds its own friendly roster from your connected RS-SDK folder—these accounts are not bundled or hardcoded.

Open a camera’s view settings (sliders icon), then choose Show players:
| Option | What appears in that camera |
|---|---|
| Use global filter | Follows Friendlies only and the team selector in World controls. |
| All players | Shows players regardless of friendly status or the global team selection. Useful for resource competition and Wilderness activity. |
| Friendlies only | Shows identities in your friendly roster, independently of the global team selection. NPCs are not removed by this player filter. |

Global versus camera filters: use World controls → Friendlies only for the shared view, and select a team to narrow it further. Cameras with an explicit All players or Friendlies only choice override that global selection. The roster’s name search and minimum combat level narrow its list; they are not camera visibility filters. Friendly status is an identity match, not proof of ownership; red means another player, not confirmed hostility.
Read the overlays: Team presence shades concentrations of players (green friendly, red other, gray unknown). Movement trails show up to five minutes of this session’s sampled positions, not exact routes. Data coverage marks the shared detail area and its freshness; outside it, only roster positions may be available. Adjust Overlay opacity or turn layers off for a clearer scene. Amber multi-combat zones mark local source boundaries, not PvP eligibility or safety. Show/Hide roofs changes terrain cutaway, not player visibility.
Explore the world
The runite camp above and the views below are real captures from the live app. Each area was given the shared detail feed for its capture; the screenshots do not imply simultaneous detailed coverage everywhere.
Ardougne city center — market-square activity

Varrock West bank — banking and nearby player activity

Kalphite Queen — a focused view inside the lair

Steel dragons — Brimhaven Dungeon combat

Track one player: Goondelf — north-facing follow camera and observed equipment
![]()
Choose your next hotspot — search cities, mining camps and dungeons

Coverage matters: the live feed has one shared detail area. Other cameras can show roster positions without full NPC/equipment detail. “Focus details” moves that shared area; a new tile does not create another feed. Positions, gear and NPCs are observations, not omniscient game state.
Blackrock: follow demand, then research the item
Compare buy orders, sell orders and recent trades in a searchable, sortable order book. Rank by listed GP, quantity or price; filter the table, save a view, watch items and export loaded rows. Open an item dossier or prepare a question for the assistant without losing your research context.

Economic intelligence adds basket comparisons, price history and evidence about which goods are moving. A selected basket is not a global inflation index. Listed orders are not guaranteed fills. History depends on available upstream records and locally collected samples.
Bank holdings: find stock, then plan a goal
Search an item with catalog suggestions. Narrow the returned holders to My bots, Friendlies, Known players or All public holders. Compare quantities, inspect a holder, jump to their Palantir view, and draft a goal with a target quantity and proposed contributions.

This is a desk for published bank previews, not a credential-based inventory dump. The source returns at most 50 accounts and six displayed items per account. Missing stock is unknown, not zero. Definition GP is not market value. Goal drafts neither reserve items nor transfer them.
Swarms: research groups over time
Define a cohort by exact names or a prefix, then inspect observed membership, locations, activity, changes and evidence gaps. Keep My team separate from groups you are researching. Shared naming alone does not establish ownership, allegiance or a common operator.

This capture shows an unsaved example definition, not measured swarm results. Saving a group keeps observation collection active while the local service runs; history begins when collected. Unsupported or insufficient activity signals remain Unknown.
Assistant and Command
The assistant connects research tools and contextual questions to your installed, signed-in Codex CLI. Mastra-based tooling and coordinator adapters support deliberately configured local/network agent workflows. Command provides mission planning, simulation and explicit gameplay setup.
These integrations are experimental. A discovered CLI, registered peer or successful simulation does not prove live execution, remote cancellation or compatibility with every agent. Folder discovery never starts bots, grants account ownership or approves a mission. See coordinator boundaries.
Install
Currently validated on macOS. Have Git, Node.js, pnpm 10.29.1, Bun and Python 3 installed. A browser with WebGL2 support is needed for 3D maps. Optional confined agent execution uses macOS sandbox enforcement; other platforms require separate acceptance.
| 1 | git clone https://git.cafe/rs-sdk/palanti-rs-sdk.git |
| 2 | cd palanti-rs-sdk |
| 3 | pnpm install --frozen-lockfile |
| 4 | pnpm run viewer:build |
| 5 | pnpm run check |
| 6 | pnpm run start |
Open http://127.0.0.1:5197.
The first viewer build downloads pinned renderer source and public game cache files, then prepares the atlas. Allow time, disk space and an internet connection. Dependencies and generated caches are built locally; they are not shipped in the source tree. pnpm run check includes the frontend build served by the local API.
Already running another copy? Use PORT=5198 pnpm run start and open that port. Each installation must keep its own writable runtime data.
For a dependency/build inventory:
| 1 | python3 scripts/doctor.py |
See community setup for more detail.
Run on your Mac mini, view from your laptop
Keep one Palantir service running on your Mac mini, then open the same dashboard from your laptop over a private SSH tunnel. The mini holds the connected RS-SDK folder, friendly roster, history and local agents; your laptop renders the 3D view and keeps its own browser layout.
After starting Palantir on the mini, run this on the laptop, using your SSH username and the mini’s configured network address:
| 1 | ssh -N -o ExitOnForwardFailure=yes -o ServerAliveInterval=30 \ |
| 2 | -L 127.0.0.1:5197:127.0.0.1:5197 USER@MAC_MINI_HOST |
Open http://127.0.0.1:5197 on the laptop and keep the tunnel running. Other desktops/laptops can connect the same way. Tailscale can provide private connectivity for SSH when already configured.
The app remains loopback-only: direct LAN/Tailscale URLs are not enabled. Both tunnel ports must match the host’s Palantir port. All viewers share the host’s single live-detail area; their camera layouts remain browser-local. Phone/tablet access requires compatible tunnel software and is not yet validated.
See the cross-device setup guide for alternate ports, host-folder selection, MCP clients and troubleshooting.
Connect your RS-SDK project
Public market/world research works without a game-account login. To recognize your own roster:
- Open Settings from the top bar in either workspace.
- Under Project & fleet, browse or paste the folder containing your RS-SDK
sdk/andbots/directories. - Choose Preview accounts, check the usernames, then Connect this project.
- Use Refresh accounts after adding bots, or Disconnect to remove this folder connection.
Only BOT_USERNAME from bots/*/bot.env enters the friendly roster. Passwords and tokens are not sent to the frontend. Friendly is not the same as owned: mark ownership explicitly in Teams & data when needed. Connecting does not start a game session or authorize control.
No Notion account, shared spreadsheet or developer’s roster is required. Your selected path is stored locally in ignored data/project-settings.json. As a startup fallback, use RS_SDK_ROOT in an ignored .env; a saved connection or explicit disconnect takes precedence.
API, CLI and MCP
Open Settings → API / CLI / MCP for this installation’s addresses, commands and generated MCP configuration.
There are two different folders:
| Folder | Purpose |
|---|---|
| Palantir installation | Contains this app and scripts/mcp.ts, the MCP bridge |
| Connected RS-SDK project | Supplies your bots/*/bot.env friendly usernames |
The MCP snippet is generated from the actual Palantir installation path and current localhost port. There is no hardcoded developer username. Copy the snippet from your own running app into a compatible same-computer stdio MCP client; client configuration formats vary. Re-copy it after moving Palantir or changing its port. Switching your RS-SDK folder does not move the MCP script.
The bridge uses Bun, so it must be available to your client. If a desktop client cannot find bun, configure the executable path according to that client’s instructions. Keep Palantir running: the MCP bridge calls its local API.
Read-only CLI examples, from this repo:
| 1 | pnpm run blackrock --help |
| 2 | pnpm run blackrock search 'steel bar' |
| 3 | pnpm run blackrock buy-demand 2353 --days 7 |
| 4 | # For a second installation: |
| 5 | RS_WATCH_URL=http://127.0.0.1:5198 pnpm run blackrock fleet |
Local API/CLI/MCP access is separate from external-agent registration and gameplay permission. Start with research tools; configure execution only through its explicit setup and approval flow.
Develop and update
| 1 | pnpm run check # TypeScript, Bun tests, production frontend build |
| 2 | pnpm run build # Rebuild frontend after UI changes |
| 3 | pnpm run viewer:build # Rebuild maintained renderer patch and cache assets |
| 4 | python3 -m unittest discover -s tools/market/scripts -p 'test_*.py' |
Use pnpm for dependencies and Bun for the server/tests. Renderer changes belong in patches/rs-world.patch, not only generated files. Source-parity checks and definition regeneration require an explicit compatible RS-SDK checkout; ordinary use relies on bundled definitions.
Start with AGENTS.md, DESIGN.md, architecture, economic-intelligence handoff and bank contracts. Retained engineering docs can contain historical monorepo paths; this README governs standalone installation.
For normal updates, review changes, pull your chosen branch, install with the lockfile, rebuild/check and restart. For moving changes from a private installation, follow the reviewed source-sync workflow; do not bulk-copy private folders.
Privacy and contribution
Keep .env, bot.env, local paths, credentials, account grants, databases, conversations, reports and runtime logs out of commits. Configuration/state belongs to each installation. Never share a writable database between two servers.
Contribute through GitCafe. Include reproduction steps, checks and screenshots for UI work; see CONTRIBUTING.md and SECURITY.md. Do not put credentials or exploit details in public issues. Current dependency, platform and asset-review limits are recorded in RELEASE-READINESS.md.
Credits and license
Thank you, Max Bittker. This project builds on the game and live-world tooling made possible by:
- MaxBittker/rs-sdk — the RS-SDK game and agent-development foundation, derived from LostCityRS/Server.
- MaxBittker/rs-world — the live 3D world viewer, based on dennisdev/rs-map-viewer.
- Frosted UI / Whop, React, Radix and Tailwind — interface foundations.
- dithercn by Leo / OpenCore — the dither engine used in visual comparisons and live status.
- Mastra, the AI SDK, OpenUI, Recharts and the other open-source dependencies recorded in the lockfile.
The app retains the MIT LICENSE inherited from RS-SDK, including Lost City’s copyright notice. The viewer has a separate BSD-2-Clause notice, and copied Dithercn source has its MIT notice. See THIRD-PARTY-NOTICES.md for provenance and distribution boundaries.
Game assets, cache files and branding retain their original ownership. The app’s source license does not grant blanket redistribution rights to them. This is a community project, not affiliated with Palantir Technologies, BlackRock, Whop, Jagex or the owners of RuneScape.
Build useful tools. Keep the evidence visible. Know which bot has your cannonballs.
Public website preview
The separate website can host a read-only public world camera. See export boundaries and protocol. The personal RS-SDK checkout and app server are never exported.