{"slug":"swarm","name":"swarm","kind":"app","version":"0.1.0","description":"LLM-simulated worlds: an office of LLM employees, a village of 100 LLM villagers, and a multi-persona document reviewer — all driven by local Ollama models.","llm_description":"Four self-contained frameworks for simulating social/working groups with local LLMs (Ollama), no cloud. `office` (Rust/Bevy) runs a company of LLM employees who plan, code, review and ship a real product across days; `village` (Rust/Bevy) runs 100 LLM villagers with memories, needs and conversations; `swarm` (Python) reviews a document with a panel of LLM personas and a thinking synthesizer; `companies/` holds per-company configs and seed repos the office sim codes against. Everything talks to local models over HTTP; no API keys or secrets in the source.","keywords":["llm","simulation","agents","multi-agent","society","office","village","document review","local llm","ollama","personas"],"code_keywords":["rust","bevy","python","ollama","reqwest","ratatui","cargo","pixi","opencv"],"languages":["rust","python"],"author":"kenton","license":"","homepage":"","entry_points":["swarm/cli.py","office/src/main.rs","office/src/llm.rs","village/src/main.rs","village/src/llm.rs","companies/starter/company.toml"],"install":"cargo build --release (office, village); python3 (swarm, stdlib only + pdftotext for PDFs)","run":"office: cargo run --release -- office companies/starter | village: cargo run --release | swarm: python3 -m swarm.review <document.pdf>","model":"qwen3.5:9b","prompt_summary":"Built as a family of local-LLM social simulations: an office of coding employees, a village of 100 villagers, and a persona-panel document reviewer.","file_count":149,"total_bytes":1619792,"downloads":15,"views":54,"created_at":"2026-10-16T18:06:15.922811981+00:00","updated_at":"2026-10-16T18:06:15.922811981+00:00","specs":null,"files":[".ndignore","assets/fonts/DejaVuSans.ttf","companies/algodojo/company.toml","companies/algodojo/seed/README.md","companies/algodojo/seed/judge.py","companies/algodojo/seed/pixi.toml","companies/lantern/company.toml","companies/lantern/seed/Cargo.toml","companies/lantern/seed/README.md","companies/lantern/seed/judge.sh","companies/lantern/seed/src/agent.rs","companies/lantern/seed/src/browser.rs","companies/lantern/seed/src/events.rs","companies/lantern/seed/src/main.rs","companies/lantern/seed/src/mock.rs","companies/sparrow/company.toml","companies/sparrow/seed/README.md","companies/sparrow/seed/core.py","companies/sparrow/seed/judge.py","companies/sparrow/seed/main.py","companies/sparrow/seed/overlay.py","companies/sparrow/seed/pixi.toml","companies/sparrow/seed/scene.py","companies/sparrow/seed/topmap.py","companies/starter/company.toml","companies/starter/work/deliverables/aiko-tanaka/t10.md","companies/starter/work/deliverables/aiko-tanaka/t7.md","companies/starter/work/deliverables/elena-vasquez/t2.md","companies/starter/work/deliverables/elena-vasquez/t6.md","companies/starter/work/deliverables/marcus-chen/t8.md","companies/starter/work/deliverables/marcus-chen/t9.md","companies/starter/work/deliverables/omar-hassan/t1.md","companies/starter/work/deliverables/omar-hassan/t4.md","companies/starter/work/deliverables/priya-nair/t3.md","companies/starter/work/deliverables/sofia-lindgren/t5.md","companies/starter/work/mail/aiko-tanaka/day01-1300_from-dana-reyes.md.read","companies/starter/work/mail/aiko-tanaka/day01-1500_from-dana-reyes.md.read","companies/starter/work/mail/aiko-tanaka/day01-1630_from-dana-reyes.md.read","companies/starter/work/mail/dana-reyes/day01-1130_from-elena-vasquez.md.read","companies/starter/work/mail/dana-reyes/day01-1230_from-omar-hassan.md.read","companies/starter/work/mail/dana-reyes/day01-1430_from-aiko-tanaka.md.read","companies/starter/work/mail/dana-reyes/day01-1430_from-priya-nair.md.read","companies/starter/work/mail/dana-reyes/day01-1500_from-omar-hassan.md.read","companies/starter/work/mail/dana-reyes/day01-1500_from-sofia-lindgren.md.read","companies/starter/work/mail/dana-reyes/day01-1600_from-aiko-tanaka.md.read","companies/starter/work/mail/dana-reyes/day02-1100_from-aiko-tanaka.md.read","companies/starter/work/mail/dana-reyes/day02-1230_from-aiko-tanaka.md.read","companies/starter/work/mail/dana-reyes/day02-1230_from-elena-vasquez.md.read","companies/starter/work/mail/dana-reyes/day02-1400_from-marcus-chen.md.read","companies/starter/work/mail/dana-reyes/day02-1430_from-elena-vasquez.md.read","companies/starter/work/mail/dana-reyes/day02-1630_from-marcus-chen.md.read","companies/starter/work/mail/dana-reyes/day03-1530_from-sofia-lindgren.md.read","companies/starter/work/mail/dana-reyes/day04-1130_from-elena-vasquez.md.read","companies/starter/work/mail/dana-reyes/day05-1500_from-omar-hassan.md.read","companies/starter/work/mail/elena-vasquez/day01-1000_from-dana-reyes.md.read","companies/starter/work/mail/elena-vasquez/day01-1430_from-dana-reyes.md.read","companies/starter/work/mail/elena-vasquez/day02-1300_from-dana-reyes.md.read","companies/starter/work/mail/elena-vasquez/day04-1000_from-dana-reyes.md.read","companies/starter/work/mail/marcus-chen/day01-1530_from-dana-reyes.md.read","companies/starter/work/mail/marcus-chen/day01-1600_from-dana-reyes.md.read","companies/starter/work/mail/omar-hassan/day01-0930_from-dana-reyes.md.read","companies/starter/work/mail/omar-hassan/day01-1330_from-dana-reyes.md.read","companies/starter/work/mail/omar-hassan/day05-1330_from-dana-reyes.md.read","companies/starter/work/mail/priya-nair/day01-1030_from-dana-reyes.md.read","companies/starter/work/mail/sofia-lindgren/day01-1400_from-dana-reyes.md.read","companies/starter/work/mail/sofia-lindgren/day03-1130_from-dana-reyes.md.read","companies/starter/work/mail/sofia-lindgren/day05-1500_from-dana-reyes.md.read","companies/starter/work/plan.md","companies/starter/work/project/db/migrations/004_data_quality_dashboard.sql","companies/starter/work/project/docs/onboarding-t10-sync-engine.md","companies/starter/work/project/docs/onboarding/sync-engine-architecture.md","companies/starter/work/project/docs/onboarding/sync-engine-guide.md","companies/starter/work/project/docs/rollback_v2.3.md","companies/starter/work/project/docs/runbook/rollback-v2.3.md","companies/starter/work/project/docs/runbook_rollback_v2.3.md","companies/starter/work/project/docs/status-page-scope.md","companies/starter/work/project/docs/status_page_runbook.md","companies/starter/work/project/docs/sync-engine-architecture.md","companies/starter/work/project/docs/sync-engine-onboarding.md","companies/starter/work/project/migrations/001_data_quality_view.sql","companies/starter/work/project/migrations/005_data_quality_stats.sql","companies/starter/work/project/public/status.html","companies/starter/work/project/scripts/rollback.sh","companies/starter/work/project/scripts/rollback_v2.3.sh","companies/starter/work/project/src/api/status.rs","companies/starter/work/project/src/components/AuditLogTable.tsx","companies/starter/work/project/src/components/AuditLogViewer.tsx","companies/starter/work/project/src/components/DataQualityDashboard.tsx","companies/starter/work/project/src/console/components/DataQualityDashboard.tsx","companies/starter/work/project/src/console/components/EmptySearchResults.tsx","companies/starter/work/project/src/console/components/EmptyState.test.tsx","companies/starter/work/project/src/console/components/EmptyState.tsx","companies/starter/work/project/src/console/components/SearchEmptyState.tsx","companies/starter/work/project/src/console/components/__tests__/EmptySearchResults.test.tsx","companies/starter/work/project/src/fhir/validator.rs","companies/starter/work/project/src/migration/dry_run.rs","companies/starter/work/project/src/sql/views/data_quality.sql","companies/starter/work/project/src/sync/api/data_quality.rs","companies/starter/work/project/src/sync/fhir_validation.rs","companies/starter/work/project/src/sync/fhir_validator.rs","companies/starter/work/project/src/sync/ingest.rs","companies/starter/work/project/src/sync/load/generator.rs","companies/starter/work/project/src/sync/metrics.rs","companies/starter/work/project/src/sync/metrics.sql","companies/starter/work/project/src/sync/migration/dry_run.rs","companies/starter/work/project/src/sync/migration/dry_run_test.rs","companies/starter/work/project/src/sync/migration_runner.rs","companies/starter/work/project/tests/fhir_validation_test.rs","companies/starter/work/tasks.json","notdouble.toml","office/.cargo/config.toml","office/Cargo.lock","office/Cargo.toml","office/src/activity.rs","office/src/bin/office-tui.rs","office/src/company.rs","office/src/gitrepo.rs","office/src/lib.rs","office/src/llm.rs","office/src/main.rs","office/src/panel.rs","office/src/people.rs","office/src/round.rs","office/src/scene.rs","office/src/shared.rs","office/src/sim.rs","office/src/tasks.rs","office/src/verify.rs","swarm/__init__.py","swarm/__main__.py","swarm/actions.py","swarm/cli.py","swarm/config.py","swarm/events.py","swarm/extract.py","swarm/llm.py","swarm/memory.py","swarm/personas.py","swarm/review.py","swarm/world.py","village/Cargo.lock","village/Cargo.toml","village/src/agent.rs","village/src/llm.rs","village/src/main.rs","village/src/persona.rs","village/src/sim.rs","village/src/sim_config.rs","village/src/world.rs"]}