Nietzsche Marcus Aurelius Lao Tzu You

The manual

Symposium

A table of philosophers who argue aloud, in their own rhythms, and may cite only what they actually wrote. You are the host. This is how the evening works.

161seated
60tables laid
121texts held
12schools
45still alive
35quotable
161portraits
01

Lay a table

The app opens with empty chairs, on purpose — nobody is chosen for you. Three ways to fill them, and they are different offers rather than one offer three times.

tap a chair Opens the roster. Every man shows what he will do to your question under his name, which is the thing you are actually choosing between.
search Reaches names, schools and centuries — and what each man argues. Type free will and you get Sapolsky, Spinoza, Harris and Strawson; type stoic, or kier, or 1600s, and it still works the old way.
seat an opponent Pick a man already seated and the app offers people known to argue with him, saying what the disagreement is. It does not compute this — it reads it out of the curated tables, where somebody already wrote down what the fight was about. Where there is no record it says so and offers a draw from another school.
lay a table Sixty curated arguments. Each names the disagreement in a line, because that is the reason to pick one.
seat me a table A draw from all one hundred and sixty-one. The second chair is always from a different tradition than the first, or the evening opens with two men agreeing.
an evening with… One philosopher, drawn at random from all one hundred and sixty-one, already seated and already asked a question written for him. The rest of this app is argument; this is the one arrangement where a single man gets to be long, with no floor to yield and nobody waiting. It exists because a list of a hundred and sixty-one names quietly shrinks to the dozen you already recognise — you do not have to know who Zera Yacob is to spend an evening with him. It remembers the last twenty men drawn and does not offer them again.
your tables Tables you laid yourself and kept, above the curated ones. Each can be laid, revised or forgotten.
clear the table Empties every chair at once, between sittings. The transcript is untouched — this is a change of roster, and what was said still happened. leave is what empties the room.

Two to five chairs. You can seat someone mid-conversation with draw up a chair — he arrives into the argument in progress and answers that, not a fresh question.

The roster open at The sciences, listing Darwin, Turing, von Neumann and others.
Choosing who sitsThe roster opens by school. A living man carries his disclosure in the list itself, before you seat him rather than after.
Forty engraved portrait medallions in a grid, five rows of eight.
                    Each is a philosopher's face struck on a coin in the manner of an
                    engraving, most with his name lettered around the rim, drawn from
                    all twelve schools on the roster.
The facesAll hundred and sixty-one are drawn portraits, struck as coins and lit by the room — bright for the man with the floor, dimmed for the men listening. Anyone added later keeps a generated face until somebody draws him, so the table never waits on the set being complete. The host has a chair too, and can put his own face in it.
01b

Keep a table of your own

Sixty curated arguments is a good default and a poor ceiling. When a table turns out to be the one you wanted, keep this table saves who was in it and the questions you want to ask them — during the argument, not only after it, because the evening a table proves itself is the evening you will remember to save it.

A name Suggested from the men in it — Socrates & Nietzsche — and yours to overrule.
A line of friction What they disagree about, shown under the name in the menu. Optional, and worth writing.
Your questions Offered under something to ask them whenever those men are seated together, however you got them there — laid from the menu, built by hand, or arrived at by excusing somebody.

Your tables can never shadow or delete a curated one: they are kept apart in the app's own storage and carry their own identifiers. Keeping the same men twice revises the table you already have rather than leaving you two rows you cannot tell apart. A table that names somebody no longer in the roster is withheld from the menu rather than laid short.

02

Ask them something

Type it, or hold the microphone and speak it. Open the sentence with a name and it goes to that man first — “Marcus, does the fort hold?” — and the rest of the table decides for itself whether to join him.

Speaking fills the field; the arrow sends it. Letting go used to send directly, which was one gesture and one decision and is the better design right up until a name comes back misheard — and a question that has gone cannot be recalled, because the table has answered the wrong words. Look at what it heard, fix it if you need to, then send. Swipe the field left, or tap the ✕, to clear it whole.

something to ask them offers questions written for the table as it is actually seated — matched to who is in the chairs, not to which preset you last tapped.

03

What happens in a round

Everyone at the table is scored on how strongly your question touches what they care about. The strongest reaction leads. The man most opposed to him speaks second — friction is the design, not a side effect. A third joins only with a genuinely different angle.

Each contribution arrives in two or three turns: a short opening that states his answer, then the explanation. That is not a style choice — every turn is spoken the moment it is written, so a short opening reaches you while the rest is still being composed.

A name, spoken The narrator says who has the floor — once, on a change of speaker. Nobody reintroduces the man still talking.
A stage direction · laughs, · does not look up. Manner, never mind: what a person in the room would see.
A citation The work he is drawing on, tappable for the reference.
A turning mark His voice is being fetched. Words arrive first; audio follows.
A sitting in progress: five engraved portrait medallions across the top, Marcus Aurelius lit and speaking, a citation under Spooner's turn, two raised hands numbered in the order they went up.
A round in progressMarcus Aurelius has the floor and is lit for it. Spooner's turn carries the work he drew on. Two hands are up, numbered in the order they were raised.
04

Move the conversation

Four things you can ask for that a plain question will not produce.

hear one of them out One man, the floor, no interruptions — his whole position in four to six movements, the first spoken while the rest are still being written.
steelman the other case One philosopher argues another's position in good faith, marked with a laurel, then earns exactly one aside in his own voice. The man whose view it is may judge it.
a raised hand Somebody who was addressed and has not answered. Tap his portrait and take it.
excuse him Remove a man mid-sitting without ending it. Swap one for another and the newcomer arrives at the end of the arc — the table is a sequence of arrivals, not a seating plan.
05

Take the floor

Tap your own portrait and you have asked to speak. The man talking finishes his thought, nobody new begins, and the label under you goes waiting → your turn. Holding the microphone does the same thing and silences the room at once.

Pause Holds the line where it is. Play resumes at the same word.
Interrupt Abandons the line and everything queued behind it.
Mute Makes the table inaudible. The argument continues in text.

Three controls that stop sound and they are not the same. Pause keeps your place. Interrupt does not. Mute does not stop anything — it stops you hearing it.

06

Let them talk without you

For a sitting you cannot attend to — running, driving, cooking. Choose let them talk by themselves before you ask, then ask however you like. The table takes it from there and the toast closes it. Nothing needs tapping again.

LengthExchangesHow they talk
106the usual pace
159the usual pace
2012room to develop
3018room to develop

It quickens near the close, whatever it started as, so the last round is the end of a movement rather than a sudden change of manner. And it stops early when the argument runs dry — a twenty-minute setting ending at eleven is the table having finished, not a fault. take the floor ends it at the next round boundary.

07

End it, or keep it

toast closes the sitting. The table finishes what it was already saying first — the button says letting them finish… while it drains — and then raises a glass.

back to the table Puts the glass down. The argument is intact; one more question is the most ordinary thing to think of after deciding you had finished. The toast is not thrown away: while nobody has spoken since, the button in the top bar reads back to the toast and returns you to it. Once anybody speaks it goes back to raising a new one, because the old one no longer closes this evening.
Saving without a toast All three saves are also in the download menu in the top bar, at any point in an evening. You never have to raise a glass to keep one.
keep the whole sitting Writes both a readable transcript and an archive the app can reopen — named for who was there, what it was about, and the month, day, year and hour: Hume, Kastrup, Rumi. Consciousness — 08-01-26, 2037. The same stamp appears in Kept sittings, character for character, so what you read there is what to look for in Files.
save the voices An audio recording of the evening, your questions included. Every turn is brought to the same loudness on the way out, so a cloud voice and a phone voice sit at one level and the volume does not need touching when the speaker changes.
kept sittings Every evening you kept. Two things to do with one: hear it again plays it back line by line in the voices that said it, and carry it on reseats the same men with the argument behind them, so the next question continues it rather than starting a new one.

A rough copy is written after every round, whether you ask or not, as Unfinished sitting.txt in Files → On My iPhone → Symposium. It survives a crash. It is the words, not the audio, and the next evening overwrites it.

Carrying one on rebuilds what the philosophers were told: the question, the rounds in the order they happened, and every interjection of yours between them. What is not rebuilt is how strongly each man reacted — those numbers decide who leads a round, they are spent by the time it is over, and inventing them would read as evidence of something. A sitting merely reopened stays a recording, and the screen says which you are looking at.

08

Open one again

The sliders icon in the top bar → Kept sittings. Everything you kept is there, newest first, each row showing when it was, how many lines it ran to, whether it was toasted, and who was at it. Reachable between sittings and from the toast — not mid-argument, because opening one replaces what is on screen.

hear it again Playback. The words go back on screen and the same men are reseated — which is not decoration, since voices are assigned per chair and per philosopher, and an evening reopened at a different table would be read back in the wrong voices. Tap any speaker to hear from there, or hear it all to run the whole thing.
carry it on The same men, with the argument behind them. The question, the rounds in the order they happened and every interjection of yours between them are handed back to the philosophers, the floor opens, and your next question continues the evening instead of starting a new one.

Two files are written and only one of them reloads. The .txt is for a person: it is what you send somebody or read on a laptop, and it is deliberately lossy — speaker, words, citation, and nothing a machine would need. The .symposium archive beside it is for the app, and it is the one Kept sittings lists. Editing or renaming the text file changes nothing about what can be reopened.

Both land in Files → On My iPhone → Symposium, so an evening can be moved to a computer, backed up, or handed to somebody. Carrying one on needs the archive, so keep it if you think you might want the argument again — keep the whole sitting writes both, and save the voices writes the audio separately.

The toast: one closing line each from Spooner, Nietzsche, La Boetie, Marcus Aurelius and Lao Tzu.
The toastOne line each, in the order they last spoke, and then the candles gutter.

What they remember

They have met you before

Each sitting is recorded as a gist and read back at the next one, so a philosopher can say “when you were last here you doubted…” — and will not reuse an image or an opening he has already spent on you.

He remembers only the evenings he was actually at. A man recalling a conversation he was absent from is inventing one, which is the same fault as an invented citation and harder to catch, because you may half-remember it too and agree.

A steelman is recorded as a case put, never as a view held. He argued it because you asked. The same is true of a movement — see below.

How hard they press

Cordial, candid, adversarial

One dial in the settings menu, and a different question from whether anybody's mind changes. A man can be immovable and courteous, or open to persuasion and merciless.

SettingWhat changes
CordialThey say what is right in the other man's case before pressing, and take the disagreement up from there. Fewer interruptions.
CandidThe default, and what an evening has always been: the second turn goes to whoever stands most opposed, and they argue. Adds nothing to the round.
AdversarialThey find the weakest joint and put their weight on it, name an evasion when they see one, and will not let a question be answered sideways.

Both ends carry a floor, and it is a different one at each end. Cordial is not permission to stop disagreeing — a table that agrees is five men saying nothing at length, and friction is the design. Adversarial is not permission to be personal: against the position, never the man, and no diagnosis of anybody's motives. Those two failures are what this app exists to avoid, and a manner setting must not smuggle either one in.

Never in the opening round, whichever way it is set — two men are stating positions and there is nothing yet to press on. Change it mid-argument and it takes effect at the next round.

When somebody gives ground

They can be moved

A table where nobody ever moves is not a symposium; it is five lectures taking turns. So something said in the room — by another philosopher, or by you — can change what a man says next, and the turn is marked when it does.

Always on, and the floor below is what makes that safe. It was a setting for a while and is not one now: two dials for one evening was one too many, and the bound here is a type with two cases and an audit behind it rather than a request that might be ignored.

Grants the point A premise conceded while the conclusion is still refused. You are right that the contract cannot be produced. It does not follow that I owe you nothing. This is what a serious person does under pressure, and it is the commonest honest form of being persuaded.
Follows his own argument A consequence of his own commitments that he had not drawn until somebody put the case in front of him. Nothing is imported; something is noticed, and he is still exactly who he was — one step further along his own road.

There is no third move, and that is enforced rather than requested. A load-bearing commitment is never abandoned: the reply is refused and the turn dropped. A movement must name who caused it, and that person must actually be in the room. Nobody is moved in the opening round, because nothing has been said yet to be moved from. And a man cannot move himself.

It is never remembered as his position. He granted something to somebody on one evening; that happened, and you may refer to it. What does not survive is the reading that he now believes it — a philosopher rewritten one concession at a time would drift out of himself over a season of sittings, and nobody would see it happening. It is also rare on purpose: a man who concedes something every round is not open-minded, he is furniture.

The rules they cannot break

Why the citations can be trusted

Every integrity rule here is enforced in code, not merely requested in a prompt. A turn that breaks one is dropped before it can be spoken.

Own library only A philosopher may name his own works, by exact title. Nothing invented, nothing borrowed from the man beside him.
Exclusions honoured Books he did not write, could not have written, or that were assembled after his death are refused — with the reason attached.
Quotation verified Exact words are permitted only where the app holds the text and can check them. Everything else is paraphrase.
Spoken work, never quoted A lecture or interview may be cited and never quoted verbatim.
Manner, not mind Stage directions describe what a person in the room would observe. Never what a man is feeling.

Thirty-five philosophers can be quoted exactly today, across 121 bundled texts: Aristotle, Augustine, Bacon, Berkeley, Comte, Confucius, Darwin, Descartes, Diogenes, Dostoevsky, Douglass, Einstein, Epictetus, Hobbes, Hume, James, Julian, Kant, Leibniz, Locke, Marcus Aurelius, Marx, Mill, Nietzsche, Plato, Pythagoras, Rousseau, Russell, Schopenhauer, Seneca, Socrates, Spinoza, Spooner, Tolstoy and Whitehead. For everyone else, quotation is refused rather than guessed — and you can change that yourself for any of them, by adding a source and fetching it.

Your own material

Giving one of them a source

On the table screen, give one of them a source → the philosopher's name. Then a title, the link, optionally a note on where in it or why it matters, and whether it is a talk or video or something written — and Add it to his library. The sheet lists what he can already cite underneath, so you are not adding a second copy of a book he has.

He may cite it from the next round on, and the control is reachable mid-argument, which is usually when you want it: the moment to hand somebody a source is the moment he has said something it bears on. Swipe a source in that sheet to take it back out.

Title only, at first Until you fetch it, the app sends him the title, the address and your note — nothing else. He can name the source and ask you what is in it, and he cannot describe its contents or quote a word. Your note is the only thing that reaches him about what it says.
fetch the text Then he has read it. The app downloads the page, pulls the words out and keeps them on this iPhone. From that moment he can discuss what is in it, disagree with it, and quote it exactly — because every quotation is checked against the stored text word for word, which is the same rule the bundled books live under rather than an exception to it.
A link is required Nothing is added without one. A claim nobody can follow is unfalsifiable in practice, which is worse than merely unverified — so the link is the check, and it is yours to make in one tap from the citation.
Cited, never quoted The app holds no text for it and cannot check a word, so the ordinary rule applies with no exception: exact words only where they can be verified. A turn that tries is dropped.
Named as yours He must call it your source, not something he published. The citation says so on screen, and so does the saved transcript.
Not evidence of his view It is material he has been handed. He may disagree with it, and is told he may.

What fetching can read. Plain text, ordinary web pages, and PDFs that have a text layer. A scanned PDF with no text in it, or a page that builds itself entirely in JavaScript, will come back empty and say so. Nothing is stored silently: if the fetch fails you are told which way it failed, because a source you believe was captured and was not is the worst outcome here — you would go on expecting him to have read something nobody downloaded.

Video transcripts work well, and are worth knowing about: paste the link to a transcript rather than to the video, and the talk becomes as quotable as a book.

This is the one place the closed library opens, and it is worth being plain about the trade. The researched library is a promise the app makes: somebody checked that the man wrote the book and that the title is the title. A source you add carries no such promise — what it carries instead is an address, which is a stronger guarantee than most footnotes offer, and the reason it can be let in at all.

The roster

A hundred and sixty-one, in twelve schools

Grouped by where a man stands rather than when he lived. The groups exist to make a menu navigable, not to settle historiography.

SchoolSeatsWho you will find
The ancients12Marcus Aurelius, Plato, Aristotle, Plotinus, Socrates, Diogenes, Heraclitus, Epicurus, Epictetus, Seneca, Pythagoras, Democritus
The Eastern schools9Lao Tzu, Confucius, the Buddha, Abhinavagupta, Mencius, Vivekananda, Zhuangzi, Mozi, Shen Dao
The age of reason10Hume, Hobbes, Kant, Descartes, Locke, Spinoza, Rousseau, Elisabeth of Bohemia, Zera Yacob, Leibniz
After Kant12Nietzsche, Hegel, Schopenhauer, Marx, Kierkegaard, Heidegger, Derrida, Schelling, Mill, Acharya Prashant, Mainländer, Ortega
Mind and matter19Wittgenstein, Kastrup, Penrose, Dennett, Churchland, Woollacott, Anscombe, Hoffman, Gallimore, Chomsky, Nagel, Searle, McDowell, Paul Churchland, Hameroff, McGilchrist, Fodor, Putnam, Marr
Power and refusal15La Boétie, Spooner, Arendt, Douglass, Tolstoy, Larken Rose, Foucault, Rothbard, Ellul, Nock, Orwell, Hitchens, Łobaczewski, Tannehill, Corbett
Faith and the mystics17Weil, Teresa, Aquinas, Avicenna, Rumi, John of the Cross, Eckhart, Yogananda, de Mello, Watts, Dyer, Augustine, Tillich, Hildegard, Julian, Bonhoeffer, Huxley
Existence and the absurd12Beauvoir, Frankl, Sartre, Camus, Dostoevsky, Husserl, Unamuno, Peterson, Vervaeke, Campbell, Cioran, Caraco
The sciences15Darwin, Turing, von Neumann, Levin, Margulis, Faggin, Shannon, Wheeler, Gödel, Cantor, Dawkins, Sagan, Deutsch, Rovelli, Tegmark
Mysticism, mind and computation11Schrödinger, Bohm, Berkeley, Whitehead, Planck, Einstein, Luria, Wolfram, Nørretranders, Pribram, Chaitin
Philosophy of science12Popper, Kuhn, James, Russell, Comte, Bacon, Peirce, Lakatos, Feyerabend, Jung, Meyer, Shermer
Free will, consciousness and AI17Sapolsky, Chalmers, Friston, Tononi, Carhart-Harris, Bostrom, Yampolskiy, Virk, Sheldrake, Torday, Hofstadter, Harris, Clark, Strawson, Hassabis, Minsky, Graziano

Forty-four of them are alive. Those carry a standing disclosure: a living person can be got wrong in public, by name, and be around to see it — so the screen says plainly that this is a construction from published work and that he has not been consulted.

Two Simones, three Thomases

Calling a man by name

Where a given name is shared, everyone who shares it takes a surname initial — Karl M and Karl P, Simone W and Simone B, Thomas H, Thomas A and Thomas K.

The bare name reaches nobody, deliberately. Guessing between two men is worse than asking again, and you would hear the wrong one answer with no sign that anything had gone wrong.

Spelling is no help. Georg Cantor and George Berkeley are one name across a table, and dictation picks a spelling for you — so neither given name reaches anybody while both are seated, and each is addressed by surname. A name a letter or two out still finds its man (Larkin reaches Larken Rose), but never when it could find two.

Voices

Who sounds like whom

The phone's own voices work with no setup and no cost. Cloud voices are better and are billed per character; the server holds the key and enforces a daily budget, so the system voices take over rather than the table going quiet.

who is speaking Assign a voice per chair, and tell them what to call you. The first row is the narrator — the voice that says a name before every turn, and so the one you hear most often and are most likely to want changed.
cloud voices Search the whole roster, see who still lacks a voice, and fill the rest without overwriting the ones you chose.

Give your name and they will use it — sparingly, once or twice an evening, at the moment a man turns to you. A name in every turn is the register of a hold queue and would undo the thing it was added for.

The settings menu, with the three voice controls grouped at the top — who is speaking, give them real voices, how names are said — and pace, register and the remaining toggles below them.
Everything elseThe three voice controls sit at the top, because one of them is what anybody is actually looking for. Below them: pace, how hard they press, whether a speaker is announced, your kept sittings — and this manual.

When something goes wrong

What the messages mean

Overloaded The service is busy. It is retried for you before you ever see this; when you do, wait a few seconds and use the button underneath.
let them finish The connection dropped part-way. What you heard stands; this asks for the rest.
ask them again The fault landed before anybody spoke. Re-poses your question unchanged.
System voices took over A cloud voice failed once. The words are unchanged. It clears itself, and you can tap it away.

You never have to leave a sitting to recover from a fault. Every transient failure offers the way onward directly beneath it.

The same table, in a browser

The web table

Everything in this manual so far describes the app on your phone. There is a second way in: a web page, at a URL you can hand to somebody else. The philosophers, the citation audit and the rules of a round are the same code — the server and the phone share one definition of who these men are, so nothing drifts between them.

Two differences are worth knowing before you open it.

Sixty-five men, in thirteen schools. The web table seats the dead only — five per field — while the phone carries all a hundred and fifty-nine. The living are held back until their voices are a settled question. The web also has a school the phone does not: Waking up, for Watts, Dyer, de Mello, Abhinavagupta and Yogananda.

The floor is the whole page. There are no sheets and no toast: a sitting is a transcript you can read, save, and open again.

One thing the web shows that the phone does not. When a philosopher returns a turn with no words in it, the phone records the fact and says nothing; the web prints it — "reacted 0/10 but returned no words, so he stayed silent this round". It is not a fault you need to do anything about. It is the audit being visible.

Whose credit pays

Your own key, and nobody else's

Open the settings wheel and paste an Anthropic key. Without one the table cannot answer — the roster, the curated tables and the portraits all work, but nobody speaks.

The key is kept in your browser and sent with each question. The server uses it for that one round and never writes it down. So when you send the link to a friend, he pastes his own key and his rounds bill to him. Yours are never spent by anybody else.

An ElevenLabs key is optional and works the same way. Without it the philosophers are read aloud in the browser's own voices, which is free and worse. With it they are cast from your own voice library, exactly as on the phone.

Forget my keys clears both from the browser. Worth pressing on a machine that is not yours.

The voice casting carried over from the phone is offered as a starting point and is read-only on a shared table. Voice ids belong to whichever ElevenLabs account made them, so your changes stay in your own browser rather than overwriting somebody else's cast list with ids his account has never heard of.

The sidebar

Laying a table on the web

A curated argument lays one of the twenty-seven tables whose men are all on the web roster, and puts its opening question in the box.

Seat me a table draws four strangers — with one rule: the second man never shares the first man's school. Four at random produced tables that agreed with themselves.

An evening with… draws one man and asks his own question for you. One chair is the only arrangement where somebody gets to be long: no floor to yield, nobody waiting. It remembers the last twenty it drew, so an evening feels like meeting a person rather than reshuffling six names.

Clicking anyone on the roster draws up a chair for him, mid-argument included — the conversation carries on with him in it. Clear the table ends the sitting and empties the floor.

The moves

Pushing the conversation

Hear one of them out. One man, at length, with nobody interrupting — his own account of what he thinks, what drove him there, what he is against, and what he never settled.

Let one question me. He asks; you answer. Most of the work here is restraint — left alone the model writes a question with the answer folded into it, which is a lecture wearing a question mark.

Steelman. Two choices: who argues, then whose case. The advocate puts the other man's view as well as it can be put, takes one aside of his own, and then the man whose case it is says whether it was put fairly. A steelman nobody is allowed to judge is a performance.

Let them talk. Nobody prompts; the table carries on under its own momentum. An empty round is the honest end of it.

Seat an opponent. Somebody on record arguing with the man you pick, and the quarrel is named — Schopenhauer, at "What the will wants". When the record has nothing, the offer is billed as what it is: a draw from another school.

Keep this table. Remembers the cast between visits. One table, not a library of them.

Typing a name works too. "Marcus, wouldn't this make you a slave to your own habits?" is an address, not a question to the room, and the man named answers first whether or not the scoring would have picked him.

A hand goes up

Who is waiting to speak

When one philosopher turns to another by name, the man addressed gets a badge on his coin carrying his place in the queue. Two hands up is an order you can honour rather than a guess.

The hand comes down when he speaks. If a round ends with his hand still up, the question is still owed him — click his coin and he takes it up.

Clicking a raised coin takes his hand rather than excusing him. His portrait is marked because he is waiting; a tap that removed him from the table would be the opposite of what the badge invites. Coins without a badge still remove.

The wheel beside the table is thinking keeps turning between turns, not just before the first one. A philosopher may answer and the next may still be a whole request away.

Taking it with you

Saving a sitting

The transcript, as text. Built from what is on the floor rather than from the bare history, so the citations and the audit's own notes come with it. A transcript that quietly dropped what the audit found would be the wrong document for this app to produce.

The sitting, to reopen. A file, not a slot on a server. The server keeps nothing about anybody, which is what makes the URL safe to hand out — and a sitting you can mail to someone is a sitting that survives the table being cleared.

The sitting, as audio. One file of the spoken lines.

A reopened sitting is spoken again. Reopening brings back the words, not the voices — those were made in a browser that has since forgotten them. So saving audio for one speaks whatever this browser never spoke, in the transcript's order, and tells you what that will cost in characters before it starts. It used to hand over whatever happened to be in the buffer, which for a reopened sitting meant a twenty-five minute evening saved as three and a half seconds — a file, not an error, which is the worse of the two.

Audio needs an ElevenLabs key, and says so plainly when there is none. The browser's own voices cannot be captured — they render straight to the speakers and no interface hands you the sound — so rather than save a file full of silent gaps and let you discover it later, the button explains itself.

Opening one again. The three most recent sittings sit in the side column under open a sitting, named by who was at the table rather than by filename — "Virk · 14 turns · 14 min · 30 August" — and one click puts the evening back on the floor, seating and all. The time is how long it runs spoken, at the pace episode 001 was measured at, and not the length of any recording beside it: those hold every pause while the next round was being written, and across the sittings kept here they run from half to nearly double the spoken length. show the rest lists the older ones, and reopen a sitting… still opens a file picker for anything kept elsewhere.

This list exists only where the saves do. Filing a sitting into a folder the browser cannot read left the reopen dialog opening wherever the browser last was, which on a Mac is Downloads — the one place the sittings are deliberately not filed. Set SYMPOSIUM_SAVE_DIR and the list appears; without it the browser downloads as before and the picker is the way back in.

Before it is filmed

Changing what somebody said

Your own words you may fix. On the web, hover your question and press edit; on the phone, hold it and choose Fix a typo. Both mend the words on screen and in the transcript together, so the film is voiced and captioned from what you meant rather than from what the dictation heard. It is worth doing before anything is voiced: a slip left in is spoken by ElevenLabs, animated, and burnt into the subtitles.

Theirs you may not. A philosopher's turn cannot be retyped where it sits, on the web or on the phone, and that is deliberate: a line altered in place would leave no trace of having been altered, and the whole point of the table is that what a man said can be checked against what he wrote. The host is not a philosopher — he cites nothing, quotes nothing, and no audit runs on him — which is why the pencil is drawn on his lines and on nobody else's. The words live in the saved sitting, and editing that file is the edit.

On the web Save the sitting, open the file in any text editor, and change the line you want under said — each entry has a speaker and a text. Save it, then reopen a sitting… and the new words are what the voices read.
On the phone There is no editor on the phone, and iOS has nowhere sensible to type into a file. Send the archive to yourself with send it, edit it on a computer, and mail or AirDrop it back — tapping a .symposium opens it in the app, seating and all. The round trip is the feature; there is no shortcut that keeps the file honest.

Edit before you record, not after. The text drives the audio, the audio is cut into the clips, and the subtitles are timed against the finished film. A word changed after any of that has happened means doing all three again.

One limit, and it is the only one. Rewording what a man says about his own life is ordinary editing. Putting a book in his hands that he did not write is not — it breaks the single promise the table makes, and it breaks it invisibly, because a citation nobody checks reads exactly like one that holds. If an edit touches a work, verify the work.

From an evening to a film

Making an episode of it

A sitting can be cut into a film — the philosophers animated, speaking their own lines in their own voices, with subtitles and a works-cited card. The cutting is done in Anima Studio, a separate app on the desk; Symposium's part is to hand it an evening it can read. Which evening, and which app saved it, decides the first step and nothing else.

From the phone End the sitting and choose Keep the whole sitting — not Save the words, which writes only the transcript. Open Kept sittings, find the evening, and tap send it → Mail. That sends the .symposium archive rather than the text beside it. On the desk, save the attachment to Downloads and run tools/from-phone.js --go, which turns it into the shape the film tools read and checks every speaker against the roster on the way through.
From the web Save the sitting from the table — the file lands in Downloads already in that shape, and nothing needs converting. It is the same file reopen a sitting… takes, so one evening serves both purposes.

From there the two paths are one. The lines are voiced one file per line, the long ones cut at their own silences into pieces short enough to animate, and each piece becomes a shot of whoever is speaking. Anima Studio rotates through the eight framings each philosopher has, so a man with fourteen lines is not fourteen identical shots. The opening and closing sequences are kept between episodes and place themselves.

The subtitles are not transcribed. Every shot knows which line it was made from and the sitting holds the words, so they are already known — running the audio back through a recogniser would cost money to recover something never lost, and would misspell the names. What is measured from the film is the timing: each caption appears on the moment its speaker begins, and clears a quarter-second after he stops.

A line the round could not parse is written as (malformed) and has no words to caption — the audio may exist, voiced by hand afterwards, but the only copy of what was said is in the host's head. Those, and anything cut in by hand at the end, are supplied in tools/caption-fixups.json and the film tools take them as read.

Something for them to work from

Adding information to the table

Giving one of them a source hands one man a link, and the asymmetry is the point: a paper put in front of Dennett that Teresa has not seen is a move in an argument. Add information, on the web table, is the other thing — an article, a passage, an excerpt that the whole table has read, so the evening argues against something rather than from memory.

Give it a name — it is cited by that name — say where it came from, and then paste the words, fetch a page, or open a file. Read what lands in the box, cut what you do not want, and put it on the table. Every philosopher seated may refer to it, disagree with it, and quote it, and every quotation is checked against those words before the turn is heard. Click a piece's name afterwards to read it again.

Why this may be quoted when a host source may not. The rule has never been permission, it has been checkability. A link with no text behind it can only be named, because nothing here holds a word of it — that is why a link is required there. Here you hand over the words themselves, so the audit compares them character by character, exactly as it does the hundred and twenty-one bundled books. What is lost is the listener's ability to open it, which is why the philosophers must name it as material you supplied.

fetch, then look Fetching does not put anything on the table — it fills the box so you can read it first. Stripping the tags off a modern page gives the article and the furniture: Wikipedia comes back opening on four hundred words of sidebar. Cut it, then put it on. doi.org links are followed, so a DOI is often the better address to try.
when a site refuses A 403 means the site saw the request and said no — bot protection, a paywall, or a page wanting you logged in. PhilArchive and others put a Cloudflare challenge in front of papers that are free to read: your browser solves it, a server cannot. Download it yourself and open the file. Nothing is got round but a robot check.
open a file A PDF, a text file, a saved page — read straight off your disk. PDFs work because this only ever runs on your own Mac; the reader for them is Apple's and does not exist on Linux, which is the deployed table's problem and not yours.
scans A PDF of photographed pages has no text in it, and no reader gets words out of a picture. It says so rather than filing an empty article.
length They are shown the first 24,000 characters — about four thousand words — and the whole of it is held for checking quotations. An excerpt shorter than that they read entire.
whose it is If the passage is by somebody at the table, say so in the dropdown. He is then told it is his own writing rather than discussing his own book as though meeting it.
on and off Untick a row to leave it on the table without putting it in front of them for the next question. take it off clears it from tonight's table; the library keeps it.

Where it all lives

Three places, and losing any one of them loses nothing.

the table Saved Sittings/On the table/ — what is in front of the philosophers tonight. Emptied whenever a page opens, because a reload clears the floor and unseats everybody: the next thing you do may be to seat two men on an entirely different subject, and last night's paper has no business in front of them.
the library Symposium/Library/ — every piece you have ever added, the words and the file it was read out of, under one name each. bring in earlier material… lists them: bring one back in, or forget it for good, which takes both halves. A PDF you drop in that folder yourself appears there too, waiting to be read in.
the sittings Kept evenings are shared too, in Sittings/ beside the library — transcripts only. The audio stays on the machine that made it: it runs to two hundred megabytes and it is a rendering of the words rather than the thing itself. A sitting from the Mac opens on the phone slightly plainer than one recorded there, because the web keeps a citation's note and who moved whom in its markup rather than in its data.
the sitting A saved sitting carries the material whole, and reopening it puts back what that sitting was working from. Without this a sitting would keep its citation chips while the words they point at were gone — which is the failure the whole citation apparatus exists to prevent.

Only on a table you run yourself. The words are kept on the server, so this exists only when SYMPOSIUM_SAVE_DIR is set — the same gate the save buttons use, and for the same reason: a server holding writable state for whoever has the URL is a gift to a stranger. On the deployed table the panel says so instead. SYMPOSIUM_LIBRARY_DIR moves the library if you want it somewhere other than beside your sittings.

The ten steps, in four movements

Making an episode with one tool

tools/make-episode.js runs the sequence below for you, in four phases. With no phase named it reads the folders and says where the episode stands and what the next step would be — nothing is remembered in a state file, because a state file is one more thing to fall out of step with the folders it describes.

node tools/make-episode.js 004 # where it stands node tools/make-episode.js 004 --ready --go # A · free node tools/make-episode.js 004 --voices --go # B · costs node tools/make-episode.js 004 --clips # C · costs more node tools/make-episode.js 004 --finish --go # D · free
A · ready Makes the folders, copies the cast from the last episode that had one, and checks every speaker has a voice and sheets. Refuses by name if anybody is missing either. Free, and it is the phase that would have caught most of what has gone wrong before.
B · voices Speaks the lines. States the character count first and stops; --go spends it. Skips anything already made.
C · clips The one phase it cannot do for you — generating a clip lives inside Anima Studio, driven by hand. It says what to press, estimates the bill, and then checks what came back, which is the part that has actually gone wrong.
D · finish Sorts the timeline, lays the name plates, checks the result, and prints the three commands that turn a render into a published episode. Free. Refuses while Anima Studio is running, because both halves write project.json.

Why four phases and not one button. Two of them spend money and two do not, and the two that do spend a great deal — the reel’s own notes put a fifty-four line sitting at about $147 of clip generation at 480p, before a word is voiced. A single button that quietly spent that would be the wrong tool however well it worked. Every phase is safe to re-run: each does what is missing and nothing that is already done.

It does not cut the sitting, and will not. Choosing which lines make the film, and in what order, is the editorial act — episode 003 is 26 lines of 73 — and dangling.js exists because selection breaks conversations invisibly. Cut it yourself, then hand the result over.

The same evening, from archive to upload

An episode, in order

The section above is what happens; this is what you type. Every tool shows what it would do and writes nothing until --go, so the first run of each is free to be wrong. Anything touching a film's timeline reads ANIMA_PROJECT — set it once per terminal and the rest of the evening knows which episode it is working on.

cd ~/Desktop/Symposium export ANIMA_PROJECT="Symposium 003"
01

Get the evening onto the desk

One archive, in the shape the film tools read. Which command depends on where the evening was recorded, and on whether it happened in one go.

from the web Nothing to do — the saved .json is already that shape.
from the phone node tools/from-phone.js ~/Downloads/<file>.symposium --go — and it checks every speaker against the roster on the way through, which is the check that matters: a misspelt name is a philosopher who silently vanishes from the film.
recorded in parts node tools/join-sittings.js part1 part2 part3 --go. The order is the order you type, not the order they were saved — a session reopened out of sequence has a misleading timestamp. Toasts from every part are consolidated at the end.
audio, no archive Transcribe it locally, then node tools/transcript-to-sitting.js <transcript.txt> --go. Nothing is uploaded; the words are recovered, the citations are not, because they were never spoken.
02

Cut it to an episode

A morning's sitting runs longer than a film should. Write the edit list by hand — movements with titles, and the line numbers each keeps, in the order they should be heard — and the tool does selection and order and nothing else. A number used twice, or one past the end, stops the cut.

node tools/cut-sitting.js Sitting/cut-003.json --go

Read the dangling report it prints. Cutting breaks conversations invisibly: the man replying is kept, the man he answers is dropped, and the file looks perfectly well. Episode 003 reached generated audio with four of those in it — Dennett answering a telling nobody heard, Teresa an ingredient never named. The check runs itself the moment the cut is written, which is the last moment it is free.

The report is deliberately noisy — it reports suspicion, not proof. Reading six lines beats re-cutting a film.

03

Prove the citations

node tools/resolve-works.js <sitting.json> --go

It looks for somewhere each cited work can actually be read and saves only what it could verify. What it cannot verify it says so about, rather than guessing a link that later turns out to point at nothing.

04

Speak the lines

One file per line, evened out so four ElevenLabs voices sit at the same loudness, and lines over 28.8 seconds cut at their own quietest moment into parts the animator can take. Run it once without --go first: it prints the character count, which is the bill.

node tools/voice-lines.js <sitting.json> node tools/voice-lines.js <sitting.json> --go

The numbering counts files, not lines, and the speaker goes last — 014-teresa.mp3. This is not cosmetic: the reel matches a clip to a philosopher by what the filename ends with, so 002-teresa-1.mp3 is read as a man called "teresa 1", who is nobody, and twenty-eight of thirty-eight chunks disappear without a word of complaint.

A key lives in ~/.elevenlabs-key, or in ELEVENLABS_API_KEY — and an environment variable that is set wins over the file, which is worth remembering on the second attempt. Never paste a key into a chat window.

05

Seat the cast

seen before node tools/copy-cast.js --from "Symposium 002" --to "Symposium 003" --go — entities, their reference pictures and their eight framings, ids preserved. A returning cast is not re-generated.
new to the series Generate the character sheets, then node tools/split-sheets.js batch.png Teresa Dennett … to cut one image into one file per philosopher, then node tools/reel-stills.js --go for the four shots a reel needs, then node tools/cast-refs.js --go to put them into Cast & Locations.

A philosopher who never appears on screen needs no sheet. John of the Cross is discussed for a whole episode and is not at the table.

06

Build the reel

In Anima Studio: Voice & Dub → the sixth card, whole sitting → reel. Point it at the episode's Audio-Chunks folder, fill the sheets, and generate. It skips any line already shot, so a second pass costs only what is missing. It appends — clips made in a later pass land at the end of the timeline, after the outro, rather than where they belong.

ANIMA_PROJECT="Symposium 003" node tools/timeline-check.js

That reads the timeline against chunks.json and names four kinds of trouble: a line clipped twice, a line with no clip at all, clips out of order, and a clip whose length does not match the audio it claims to be. It infers the reel's lead-in from the clips themselves rather than assuming it, because assuming it once produced forty-seven faults that were not there.

If anything is out of order — and after a second pass it will be — quit Anima Studio and sort it. The clips know where they belong; each carries the line it was made from, so this is sorting rather than guessing.

node tools/order-timeline.js node tools/order-timeline.js --go
07

Put the names on screen

Quit Anima Studio first — it holds the project in memory and writes its own copy back over yours the moment anything changes.

ANIMA_PROJECT="Symposium 003" node tools/name-plates.js --go

Every second turn per speaker, the first turn always shown, and the host named once at the top and then left alone — he is the voice the viewer has been listening to since the first second, and naming him four times is a caption on the wrong thing. --every 3 thins it further; --pos upper moves it off the lower third.

08

Bookends

The opening and closing sequences are kept between episodes and are dragged in from Bookends. After a film is finished, cut the next episode's copies from it:

node tools/keep-bookends.js --outro-start 847.52 --go
09

Export, caption, file

Export from Anima Studio, then the three commands that turn a render into a published episode. The subtitles are not transcribed — every shot knows which line it was made from, so only the timing is measured.

node tools/make-captions.js --go node tools/finish-episode.js 003 --go node tools/bibliography.js "Symposium 003" --go
make-captions Writes captions.srt beside the exports.
finish-episode Copies the render into Finished Episodes as Symposium 003.mp4 with its subtitles beside it. It copies rather than moves, and refuses to overwrite.
bibliography Two lists — what the film actually cited, with the timestamp it was said at, and everything those four people wrote. The first is read out of the finished film's own subtitles, so it cannot claim a work the episode never mentions.
10

The upload

Ask for the YouTube Studio video details and the whole block comes back in one piece: the title as Symposium 003 — Teresa of Ávila, Daniel Dennett…: "the question", and a description opening with the website, then the chapter timestamps, then the works referred to, then the full bibliography.

Chapters have rules and YouTube does not explain them. The first must be 0:00, there must be at least three, each at least ten seconds after the last, and they must ascend. Break any one and none of them appear — with no error to say why. The description caps at 5,000 characters.

Upload your own subtitles rather than letting the automatic captions stand: they mishear every name at the table. The video file itself cannot be replaced after upload — a re-cut is a new video.

One thing to know

The roster ships with the app

Philosophers, curated tables and bundled texts are compiled into the app itself. There is no database and nothing downloads in the background. Anyone added since your last install is not there until you build again — which is worth remembering the day a search comes back empty for a man you know exists.


Symposium · a spoken table

They cite only what they wrote. Where the words cannot be checked, they paraphrase and say so.