尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证We endeavor to answer the question: For a given population, what are the Optimal Methods for distributing power between ALL entities (hereafter “Individuals”), such that the most Individuals would agree that the Methods selected are the fairest that can be implemented? – OR – How do we get eight billion people to get along?
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
⚠️ Early development — experimental and unverified. This is pre-alpha software: not security-audited, not validated in real-world use, and its data formats can change at any time with no migration path. Do not use it for real elections, real governance decisions, or real personal data. It is for evaluation, development, and contribution only — at your own risk, with no warranty of any kind (see LICENSE).查看完整 README ↗
⚠️ Early development — experimental and unverified. This is pre-alpha software: not security-audited, not validated in real-world use, and its data formats can change at any time with no migration path. Do not use it for real elections, real governance decisions, or real personal data. It is for evaluation, development, and contribution only — at your own risk, with no warranty of any kind (see LICENSE).
We endeavor to answer the question: for a given population, what are the optimal methods for distributing power between all entities, such that the most individuals would agree that the methods selected are the fairest that can be implemented? — or — how do we get eight billion people to get along?
The CGA implements A Fair Constitution (Cosmopolitan Template) as interactive, automatable software: residency, elections, legislatures, executives, judiciaries, organizations, and nested jurisdictions from neighborhood to planetary scale. It is federated: anyone can run their own world, standalone or joined into a mesh of instances that mirror and sync each other's public records.
Everything runs inside Docker, so you don't install databases or programming languages — just Docker, then one command. Plan on ~20 GB of free disk and leaving the computer on for the first run.
Step 1 — install Docker.
curl -fsSL https://get.docker.com | sh, then
sudo usermod -aG docker $USER and log out and back in.Step 2 — run the start command for your system. It downloads the app, starts it, and opens the setup page when it's ready. The first run builds everything — give it 10–30 minutes; later starts take seconds.
Windows 10 / 11 — open PowerShell (press Start, type PowerShell, press Enter) and paste:
irm https://raw.githubusercontent.com/CosmopolitanCoalition/fair-constitution-app/main/get-started.ps1 | iex
macOS / Linux / Raspberry Pi — open Terminal and paste:
curl -fsSL https://raw.githubusercontent.com/CosmopolitanCoalition/fair-constitution-app/main/get-started.sh | bash
Already downloaded the code yourself (ZIP or git clone)? Run the same script from inside
that folder — .\get-started.ps1 on Windows, ./get-started.sh elsewhere — and it uses your
copy instead of downloading.
Updating: re-run the same start command any time. It pulls the latest code and applies the update automatically (database migrations, interface build, worker restart). Installs made from a ZIP are connected to the update channel automatically on their next run — your settings and data are never touched by an update.
Step 3 — answer the questions in your browser. The app comes up at http://localhost:8080/setup and the setup wizard carries you the rest of the way:
On a server or a cloud machine, open the same page at that machine's address instead of
localhost (for example http://10.0.0.6:8080/setup over your VPN, or your domain once DNS is
set). The interface is a built bundle served on port 8080; no other port is needed.
Didn't open? Make sure Docker Desktop is running, give a first run a few more minutes (it's still building), then reload the page.
The steps above give you a world on your own computer — perfect for trying it out, and for a home node others on your network can reach. To put a node on the public internet at your own domain, with HTTPS, chat and voice working, follow docs/FRESH-NODE-START-CLOUD.md.
It is the same app and the same one command; a rented cloud machine is just a computer you don't have to keep under a desk. The extra work is only what any public address needs: a machine, DNS records, and a few open ports. Written against Azure because that is what has been tested — any provider with a Linux VM and a public IP works identically.
The world is built from real datasets: geoBoundaries (jurisdiction boundaries) and WorldPop (population). Download them by following docs/DATA_ACQUISITION.md.
The start command asks where they are. On the first run, the get-started script asks for
your map-data folder and points the app at it before the containers are built — so it's ready
from the moment the app comes up, with no extra steps. Already have your files at, say,
D:\map-files? Just type that when prompted. Don't have them yet? Leave it blank and download
them later from inside the app. To change the folder afterward, re-run the start script with
-Reconfigure (Windows) / --reconfigure (macOS/Linux) — it re-points the app and restarts it
for you, no Docker commands needed. (You can also preseed it non-interactively by setting
CGA_ARCHIVE_PATH before running.)
A host that resizes (cloud boxes). Every service returns at boot through Docker's restart
policy. A container keeps the memory caps it was created with, so after a resize the sizes must be
re-derived and the services recreated. On Linux with systemd, install the boot check once:
./get-started.sh --install-boot-unit. At every boot it runs ./get-started.sh --boot: when the
host's RAM or cores changed it re-derives every value in the DERIVED_KEYS ledger, recreates the
services that are running, re-bakes the config cache and restarts Horizon. On an unchanged host it
does nothing. It never updates the code. A box that takes code only on the desk's word sets
CGA_NO_PULL=1 in .env; --rederive and --boot never pull in any case.
Inside the app, the Map data step shows what it detected, lets you scope the import to a single country for a fast first world, or download the datasets over the internet country by country. The full planet is ~14 GB of source data and a 6–12 hour import.
The app runs in 76 languages: English, the six UN languages, Polish, Italian, Turkish, and every language on the Cosmopolitan Coalition website's translation programme. Every string of the interface and every server message exists in all of them, and all are switched on.
Read this before you trust a screen in another language. English is the source. Every other language is a machine draft: produced by an open model under a constitutional glossary, checked automatically for intact placeholders, tokens and citations, and then read in samples by a reviewer model that graded each language. No human has yet read most languages end to end.
If you read one of these languages, you can fix it. Sign in, add the language to your record,
and open the translation board at /system/translations: it queues the drafts for your language,
and each string you confirm or correct is recorded. The languages graded C in the status table
are the ones that need a reader first.
Every screen's Learning Drawer can open a short film, narrated and captioned in 77 languages from one silent master: the Cosmopolitan Coalition website's 61 films, played by the same multi-track player the website uses. The app ships the catalog, not the media (54.8 GB at the website's quality: 17 GB of video, 38 GB of audio, 72 MB of captions).
Getting the films onto a box. Inside the app, the Map data step has a Video library
panel. It downloads the films from the public website into your local library, resumes after a
stop, and can be halted and resumed. It pulls all 61 films by default, or the ones you pick. The
same panel points the app at a folder you already have: set the library folder (MEDIA_DIR), then
re-run the start script so the containers pick it up. MEDIA_DIR is the Subjects folder
itself, laid out as <Subject>/<Subject>-Silent.mp4, <Subject>/audio/<Subject>-<Language>.m4a
and <Subject>/captions/<Subject>-<Language>.vtt, the website's own layout. A folder that
already holds that layout plays with no copy at all.
From a shell, the same engine is php artisan media:pull (website download, queued), --sync
for a box without a queue worker, --source=folder --from=/media-source to copy from a local
folder mounted through MEDIA_SOURCE_DIR, --status and --halt. Only the website-quality
files are copied; smaller variants in a source folder are ignored.
Adding or replacing a film. /videos/manage uploads a silent master, its audio tracks and
its caption tracks (the language is read from the -<Language> filename suffix, or chosen per
file), and assigns any film to any screen's Learning Drawer. Reading the page is open to
everyone; uploading and assigning is an operator tool during development. The library itself is
at /videos.
For people running servers or contributing code — none of this is needed for a normal install:
deploy.sh (Linux · macOS) /
deploy.ps1 (Windows, PowerShell 7): headless one-command node deploy, with
flags for custom ports, second instances on one machine, and joining as a mirror in one step.
./deploy.sh --help lists everything..env value
(FEDERATION_SELF_URL) must be set before bring-up so peers can reach you back.COMPOSE_PROFILES=dev (plus APP_ENV=local,
APP_DEBUG=true) in .env to run the hot-reload dev server on port 5173; on a remote dev
box also set VITE_DEV_ORIGIN=http://<box-address>:5173. Re-run the start script after
changing them.Open source — see LICENSE. Constitutional intellectual property is always public domain per Article III §5 of A Fair Constitution.