Free, source-available browser extension (Chrome, Edge, Firefox) that reads your own Star Citizen / RSI hangar, buy-backs, balances and referrals into a clean, local, exportable database. No password, no server.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Your Star Citizen hangar, made useful: what your ships are worth, what you could
melt, what your CCUs saved you, and a clean local database you can export.
Open Hangar is a free, source-available browser extension for Chrome, Edge and Firefox.
It reads your own RSI account using the session you're already signed in with, and
saves it on your machine as tidy, structured data. Browse your fleet in the built-in
viewer, or export everything as one JSON file and build on it.查看完整 README ↗The free Star Citizen fleet manager.
Open Hangar comes in two parts that work together:
Free for every pilot: no subscriptions, no premium tier, no paid features, and your data is never sold.
Get Open Hangar · Road to Launch · Full Roadmap · Recently Shipped · Discord
Unofficial fan project, not affiliated with Cloud Imperium Games or RSI. Open Hangar only ever reads your own account.
The extension runs in Chrome, Edge and Firefox on a computer. Pick your browser on openhangar.space/extension, which shows each store's current version, or go straight to a store:
Then:
Re-scan any time to refresh. On the Settings tab, Clear Data wipes the local copy, and Log Out of RSI ends your RSI session.
The website works in any browser, phone included, and from the Nov 10 launch that's where My Hangar lives.
An invite-only tester round runs Oct 20 to 27, with invites on our Discord. Spots are limited.
The website opens to everyone, and sign-ups open to everyone. The extension no longer launches with it: 0.3.0 shipped on Oct 13, and 0.4.0 and 0.4.1 went to the stores on Oct 14.
Website features come in waves, batches that are built and tested ahead of launch. A wave's date is when it's built, not when you get it: Waves 1 to 3 are planned for launch day. Anything that isn't ready and tested in time stays switched off until it is.
Shipped means you can use it now. Built means it's done and arrives Nov 10. All dates are 2026, in UTC. Each bar fills as its tasks are done:
The Oct 27 cut-off is for the extension, which needs store review. Website features can keep landing until launch, and each one is tested before it's switched on. Every feature has its own issue in the pinned Road to Launch Tracker, and every step is in All Milestones.
Anything after launch is a plan, not a promise. The details are in the Full Roadmap.
Everything We've Shipped · Release Notes · Changelog
In the Extension (0.4.1):
On openhangar.space:
cookies permission is used only on RSI: for
Log Out of RSI, to see whether you're signed in to RSI, and for Add to RSI Cart.
Each RSI account's data is kept separately, so accounts never mix.Extension Privacy Policy · Privacy Policy Source · Website Privacy Policy
RSI has no public API for your hangar, so the extension handles the session and the page parsing in your browser and turns your account into clean records you can browse and export.
git clone https://github.com/Draco-Foundry/open-hangar.git
cd open-hangar
npm install
npm run build
chrome://extensions, turn on Developer mode, click
Load unpacked and pick dist/chrome.about:debugging, then This Firefox, then Load Temporary
Add-on, and pick dist/firefox/manifest.json.That's the store build. To work on the extension, run the developer's copy instead.
A developer's copy runs in a browser profile of its own, so it never touches the Open Hangar you installed from a store or the hangar it saved:
npm run dev:chrome
npm run dev:edge and npm run dev:firefox do the same in Edge and Firefox. Each builds
Open Hangar (Dev) (purple icons with a DEV tag) into dist/dev/ or
dist/dev-firefox/ and opens the browser with a profile kept in .dev-profiles/ (not
committed), so you sign in to RSI there once. Close the browser or press Ctrl+C to stop.
It syncs to staging.openhangar.space, never your real account on app.openhangar.space
(add --site=https://app.openhangar.space to dev:build if you mean to). Staging lets in
Firefox copies, and Chrome or Edge copies whose ids it has been told about.
If the browser isn't where it usually is, set CHROME_PATH, EDGE_PATH or
FIREFOX_PATH. Build flags: npm run dev:build -- --flag name=on, then
node scripts/dev-run.mjs chrome.
Don't load dist/firefox into the Firefox profile your store copy is in: it carries the
store copy's add-on id, so Firefox puts it in the store copy's place, with its saved
hangar. The developer's copy has its own id.
from → to, paints, add-ons, coupons) with its
contents, value, date, insurance, and whether it's giftable or meltable.Everything lives in one versioned database in your browser, and exports as one JSON file or a CSV of your pledges or buy-backs (a developer's build with the dashboard also writes a Hangar Transfer Format (HTF) file).
Every pledge is normalized to one object:
{ id, name, value, currency,
contents: [{ kind, label, image }], // items inside the pledge
image, containsShip,
isCCU, ccu: { from, to },
isAddOn, isCoupon, isPaint,
giftable, // hangar offers a "Gift" action
insurance, // 'LTI' | '120M' | '6M' | … | null
kind } // ship | ccu | paint | addon | coupon | other
Sources live in a registry (OH.SOURCES) and persist as one versioned object:
{ schemaVersion, sources: { hangar, buybacks, referral }, owner }.
The JSON export wraps that with provenance and an identity block, ordered from who to what they own:
{ app, appVersion, exportedAt, schemaVersion, // provenance
account: { // identity snapshot
handle, displayName, avatar,
ueeRecord, enlistedSince, country,
organization: { name, sid, rank, logo }, // null if none / private
subscriber, concierge,
balances: { storeCredit, uec, rec }, // storeCredit.value is in cents
capturedAt },
sources: { hangar: {…}, buybacks: {…},
referral: { items: { current, legacy, prospects,
recruitsList, prospectsList } } }, // referral code/url never exported
history: [ { at, items: [[id, name, value]] } ], // scan snapshots; merged on import
pledgeArchive: { [pledgeId]: { id, name, value, currency, insurance, ccu,
kind, date, contents: [{ kind, label }], goneAt } } }
// pledges gone from the hangar (newest 2,000), for buy-back
// details; merged on import (newest goneAt wins)
RSI signs you in with a session cookie. Because the extension has host permission for
robertsspaceindustries.com, its own requests carry your existing session: no password and
no RSI tab needed. Pages are fetched and parsed in your browser (referrals come from RSI's
GraphQL API). Scans are read-only and rate-limited.
RSI updates its site from time to time. All HTML parsing is isolated in
src/scraper/parser.js, and where it looks (selectors, patterns) is one data file,
src/data/parser-rules.json, so when the markup changes there's one place to fix.
manifest.json permissions + config (Chrome-shaped; see scripts/pack.mjs)
src/
background.js the popup's scans, the badge, alerts, our pages' messages
lib.js source registry, scan loop, storage, export/import
scraper/parser.js RSI HTML -> normalized model (the layer to maintain)
data/parser-rules.json where things are on RSI's pages (the parser rules)
popup.html the toolbar popup
scan.html the hidden scan page (scan-host.js opens it)
basic.html the small Open Hangar page
dashboard.html / .js the old dashboard (developer builds without the connector)
ui/ Svelte pages, built with Vite
scripts/pack.mjs builds per-browser bundles into dist/
The Architecture Tour walks through it all in about ten minutes.
The contract is the data shape above plus JSON export and import: JSON Backup on the
popup's Settings tab pulls the whole database out as one self-describing file, and the
dashboard's Developers page (a developer's build) restores it. Import restores holdings;
the account block is a read-only snapshot.
Export HTF (the dashboard's Developers page) writes the community Hangar Transfer
Format: one entry per ship with ship_code, manufacturer, pledge_*, lti and
warbond, ready for any fleet tool that reads HTF. Ship codes come from a bundled MIT-licensed table in src/data/ (credited in the
Third-Party Notices). CCUs, paints and add-ons have no HTF
equivalent and are skipped.
Useful commands:
npm test: the test suitenpm run build: per-browser bundles in dist/chrome and dist/firefoxnpm run pack: store-ready zips in dist/npm run lint:firefox: Mozilla's web-ext lint against the Firefox buildnpm run screenshots: the dashboard's screenshots (real UI, demo data) into
docs/store-assets/ (the store uses the popup's, screenshot-040-*)npm run demo: the demo dashboard, popup and basic page at localhost:8323, for trying
UI changesnpm run format: PrettierTo add a data source, see the Contributing Guide.
The most valuable help is keeping the RSI reader working when RSI updates its site. Start with the Contributing Guide; the Architecture Tour shows how it all fits together in about ten minutes. This repo holds the extension's code, and website features are tracked here as issues too. A change players will notice also adds a small file to changelog.d/ instead of editing the changelog.
Scans are read-only and rate-limited, and Open Hangar reads only the signed-in pilot's own account. Respect RSI's Terms of Service and don't redistribute other people's data.
Code: source available under the PolyForm Strict License 1.0.0. Read it, audit it and use Open Hangar, but don't redistribute it or publish modified versions. Releases before 0.2.12 were MIT. Third-party code keeps its own license (Third-Party Notices). Open Hangar uses no Star Citizen Fankit assets. Star Citizen® and related names are trademarks of Cloud Imperium Rights LLC; this is an unofficial fan project, not affiliated with the Cloud Imperium group of companies.
See you in the 'verse. o7