GNU Affero General Public License v3.0

项目介绍

chipmates/agoracosmica 是一个托管在 GitHub 上的开源项目,主要使用 TypeScript 编写,采用 GNU Affero General Public License v3.0 许可证,目前获得 150 个 Star、29 次 Fork。

仓库全名
chipmates/agoracosmica
开源许可证
GNU Affero General Public License v3.0
Star 数
150
Fork 数
29
未关闭 Issue
1

README 摘要

Agora Cosmica Short stories about life Nonprofit · Open Source · No tracking cookies, no profiling Open the library · Tour · Quick start · Self-hosting · Contributing · Changelog Agora Cosmica now focuses on its short stories about life. The chat has ended. The sections below on the modes, the Echo's answers and the free tier describe the chat as it ran. Its code stays in this repository until it is removed. Thirty…

完整内容见 GitHub 原始 README 或本页 。

常见问题

agoracosmica 用什么语言开发?

主要使用 TypeScript 编写,采用 GNU Affero General Public License v3.0 许可证,目前有 150 个 Star。

agoracosmica 可以免费商用吗?

仓库标注的许可证为 GNU Affero General Public License v3.0,商用前请先阅读仓库 LICENSE 文件确认授权范围。

如何获取 agoracosmica 的源码?

可以直接克隆仓库:git clone https://github.com/chipmates/agoracosmica.git,默认分支为 main;安装与运行步骤见仓库 README。

agoracosmica 最近还在维护吗?

仓库最近一次更新为 3 天前,当前有 1 个未关闭 Issue;Star 数为 150,可作为社区活跃度的参考。

关于

A Living Library You Can Talk To. Open-source educational platform with 30 historical figures from philosophy, science, art, mysticism, and activism. Stories, dialogues, AI conversation, multi-figure councils. Nonprofit, BYOK, self-hostable, no behavioral tracking.

描述取自 GitHub 官方 API,中文内容由 GitRead 中文社区 编辑团队整理。

语言占比

Astro
CSS
Dockerfile
HTML
JavaScript
Python
Shell
TypeScript

README

Agora Cosmica

Agora Cosmica

Short stories about life
Nonprofit · Open Source · No tracking cookies, no profiling

License: AGPL-3.0 Security Headers: A+ Self-host with Docker

Open the library · Tour · Quick start · Self-hosting · Contributing · Changelog

Agora Cosmica now focuses on its short stories about life. The chat has ended. The sections below on the modes, the Echo’s answers and the free tier describe the chat as it ran. Its code stays in this repository until it is removed.

Thirty figures across 2,500 years, each with twelve narrated chapters of their life.

Agora Cosmica in use: the figure gallery, Marcus Aurelius chosen and his chapter rail, a story chapter playing, the chapter paused with a typed question and the Echo's answer, then a council of four convened
The app as it was until the chat ended: a life told in chapters, with questions to the Echo along the way.
agoracosmica.org: no account, English or German.

The figures run from Laozi to Martin Luther King Jr. The voice that answers is an AI Echo, an interpretation grounded in primary works and historical context, and the app labels it as one throughout. A factcheck per figure separates what is documented from what is recreated.


One figure, six formats

Everything orbits one figure at a time. Pick Marcus Aurelius and there are six ways to spend an evening with him. Four chapters build on each other (receive, explore, connect, prove), and two open formats sit beside them.

Format What happens Type
Story A chapter of the figure’s life, narrated, about 13 minutes, text alongside Recorded
Wisdom You talk through one teaching with the Echo Live
Prism The figure works through the same teaching with three other thinkers Recorded
Quest A Socratic test of what you took from the teaching Live
Free Talk Open conversation, typed or spoken Live
Council Four figures on one question: a moderator and three voices, at two depth levels Recorded

That is 360 story chapters, 360 teachings, 360 prism dialogues and 110 council recordings on 55 questions in each language. The stories, prisms and councils all come with audio, and the stories alone run 79 hours in English and 86 in German. See all thirty figures or browse the audio library.

The thirty, roughly in order of birth

Laozi, Siddhartha Gautama, Plato, Marcus Aurelius, Hildegard von Bingen, Dōgen Zenji, Rumi, Meister Eckhart, Leonardo da Vinci, Galileo Galilei, William Shakespeare, Johann Wolfgang von Goethe, Wolfgang Amadeus Mozart, William Blake, Jane Austen, Arthur Schopenhauer, Ada Lovelace, Harriet Tubman, Emily Dickinson, Friedrich Nietzsche, Mohandas Gandhi, Carl Gustav Jung, Albert Einstein, Virginia Woolf, Joseph Campbell, Frida Kahlo, Simone de Beauvoir, Nelson Mandela, Maya Angelou, Martin Luther King Jr.

Hear the Echo voices as the chat spoke them, with Qwen3-TTS on our own speech server until November 2026:

English German
Shakespeare’s Echo voice Nietzsche’s Echo voice
Ada Lovelace’s Echo voice Hildegard von Bingen’s Echo voice

Ask while you listen

Pause a chapter and one line appears under the player: ask him something. Type it or say it. The answer comes back in the same Echo voice, built from what you have heard so far, and the chapter picks up a breath before the second you stopped it. If the exchange is going somewhere, carry it on as Free Talk.

A story chapter paused, a typed question in the ask bar under the player, and the Echo's answer as text
Pause a chapter, ask the figure, hear the Echo answer, and the chapter picks up where it stopped.

New in 1.3.0, along with an English voice engine choice: Qwen3-TTS or Kokoro, five voices per gender each.


What’s documented, what’s recreated

The facts panel for a story chapter: the date and place, what is documented, what is recreated, and the sources one tap away
For every chapter: what the record supports, what was written for the story, and the sources one tap away.

Every figure is an AI Echo, and the app says so where it counts: on the welcome screen, in the name on every figure, and in the X-AI-Generated header on every API response. Why we call them Echoes takes the hardest question about the project seriously: whether it is right to put words in the mouths of people who cannot consent.

The browser screens what you type, and the edge screens it again before it reaches a model. Self-harm screening runs in tiers: if someone writes about their own distress, the turn stops and crisis resources appear, while a question about the Stoics or Virginia Woolf gets an answer. Jailbreak patterns are blocked, and you get a warning before you send an email address or a phone number. Content safety lists the layers, and the crisis protocol says what triggers what.

The interface targets WCAG 2.2 AA: keyboard paths, screen reader labels, 44 px touch targets. The touch-target check runs in development, with no CI gate for it yet. Accessibility has the rest.


What the code does with your data

You enter with one click on a consent screen (16 or older, and the terms). There is no account. Conversation history, your profile and any API key you add live in IndexedDB in your browser, encrypted at rest with AES-256-GCM. The API key sits under a device key the browser marks non-extractable: a script on the page can use it and cannot read it out. The threat model says what that protects against and what it does not.

The free tier is 30 messages a day per device. They pass through a Cloudflare Worker to DeepSeek V4 Pro at Nebius in the United Kingdom, with Qwen3-235B in Finland as the fallback when the day’s shared budget is spent, the primary errors, or the first token takes longer than five seconds. Each reply names the model that answered. Every free reply costs us money at a provider, which is why the day has a budget behind it. The worker keeps no per-request log. With your own OpenRouter key, requests go from your browser to OpenRouter directly, pinned to one model with zero data retention on by default, and the key never reaches us. Only if OpenRouter rejects your key and you agree in the app to continue on the daily free quota does that conversation, including what was written before, pass through our servers as in the free mode.

The recorded catalog is served from Cloudflare R2 in Western Europe. Live speech ran on Qwen3-TTS for English and German on our own GPU server in Germany, with faster-whisper for speech-to-text, until the chat ended in October 2026. The server was retired in November 2026.

What we count is aggregate, with no user dimension and no key that joins two rows. The only cookies on the site are Cloudflare’s bot-detection ones. One exception, named up front: visitors from our free nonprofit Google Ad Grants ads carry a click id, and if they opt in (off by default, revocable in Settings) the worker forwards it to Google Ads at a conversion step. It never enters our own counters. What we measure lists every counter, Security architecture the data flows and subprocessors, Compliance the GDPR, EU AI Act Article 50 and youth protection (JMStV, 16+) posture. All of it is checkable against the code in this repository, which is the reason the code is public.

Architecture: your device keeps your keys and history in IndexedDB, encrypted with AES-256-GCM. Cloudflare Workers act as thin proxies for chat and audio, with no per-request logs and no user data at rest, next to the media CDN that serves pre-recorded audio from EU storage. Backends: OpenRouter for your own key, Nebius in the United Kingdom and Finland for the free tier, a Hetzner GPU in Germany that ran live audio until it was retired in November 2026, Cloudflare R2 for pre-recorded audio. Or self-host with docker compose and your own LLM.

Every route, and every limit
Your setup Where the request goes
Hosted free tier Browser, through our Cloudflare Worker, to Nebius: DeepSeek V4 Pro in the United Kingdom, Qwen3-235B in Finland as the fallback
Your own OpenRouter key Browser directly to OpenRouter, pinned to Qwen3 235B, zero data retention on by default, our worker outside the path. If OpenRouter rejects the key, the app asks first, and only a yes sends that conversation the free-tier way
Local Mode An OpenAI-compatible endpoint you run, set in Settings, with local speech set up separately
Limit Allowance
Chat, per device identity 30 messages a day
Chat, per hashed address 300 requests a day
Chat, shared across everyone 15,000 requests a day
Custom councils and conversation summaries, per identity 1 and 2 a day
Session tokens, per address 120 an hour, each valid for ten minutes

The fallback model answers in three cases: the day’s inference budget is spent, the primary model errors, or the first token has not arrived after five seconds. The budget counts real provider token usage and rolls over at midnight in Berlin. Every number here is in workers/llm-proxy/src/config.ts.


Run it yourself

git clone https://github.com/chipmates/agoracosmica.git
cd agoracosmica/client
pnpm install && pnpm setup:assets && pnpm dev

Node.js 22 and pnpm 8.15.5, both pinned. The app comes up on localhost:5173. The content (stories, prisms, factchecks, voice profiles) is fetched from the production CDN at setup and stays out of the repository under the content licence below. CONTRIBUTING.md has the rest of the setup and the pre-PR checks.

git clone https://github.com/chipmates/agoracosmica.git
cd agoracosmica
docker compose up -d

The app on port 8080, with Kokoro for English speech and Whisper for transcription beside it. --profile nvidia adds Qwen3-TTS for German, and a script does the same natively on Apple Silicon. Chat needs your own OpenRouter key or a local model: point Local Mode at any OpenAI-compatible endpoint you run (LM Studio, Ollama, vLLM, llama.cpp) and the conversation stays on your machine. Two limits before you start: self-hosted English speech is Kokoro only, since there is no English Qwen3-TTS image yet, and the browser still fetches the catalog from our CDN unless you mirror it. Self-hosting guide.


Where to start

Never used it: agoracosmica.org. Nothing to install.

Checking the claims: every free-tier number above is in workers/llm-proxy/src/config.ts, the security architecture maps every data flow, and this is the code that runs in production.

Helping: the good first issues are open, around accessible names and unit tests. Translators want ui-en.json and its German twin in client/src/assets/translations/, and a change to one lands in both. A historian who finds an error in a factcheck can open an issue with the source. Teachers who want a chapter and its factcheck in class can write to us with the intended use, since the content needs permission to redistribute until it moves to CC-BY. Questions go in Discussions. Inside the app, a Community panel already counts voting power from the teachings you complete, and voting itself opens later.

Contributing guide · Code of conduct · Security policy, for vulnerabilities


Who runs it

ChipMates gemeinnützige GmbH, a registered German nonprofit: a limited company bound to a charitable purpose under German tax law, with two projects: this one and Museum of Ages, a digital museum. When we oversimplify a figure or misread a source, write to [email protected].

Code is AGPL-3.0. Copyleft applies to network deployments. Content (stories, prism dialogues, council debates, factchecks, voice profiles, instruction prompts, images, audio) is copyright ChipMates gemeinnützige GmbH at launch and moves to CC-BY 4.0 within 6 to 12 months of the May 2026 launch. CONTENT-LICENSE.md has the terms and the attribution format.

评论

暂无评论