Files
ZacharyZhang-NYandClaude Opus 5.5 2d7af224dd
CI / Typecheck, lint, tests, e2e (push) Failing after 3m51s
Website: 16-bit pixel-art rebuild with a live Three.js office, downloads from Gitea v1.5.1
- Title screen over a real-time voxel office rendered at low resolution and quantized to a rotating 32-colour palette with Bayer dithering; day part and season re-light the scene and every surface.
- 16-bit UI kit: name-plate dialogs, menu cursor, inventory, XP bar, badges, NPC speech, GAME OVER with CONTINUE, hand-placed 12x12 icons, Fusion Pixel font (Latin subset preloaded).
- Sections as a game: quest log (onboarding), character select (AI CEO / AI Co-Founder), inventory (features), party roster (providers), live download XP, save point (all v1.5.1 builds), FAQ as NPC dialog, credits.
- Downloads and source point to the Gitea release; the download function only redirects to git.zacharyzhang.com.
- Tailwind and the old components removed; unit tests for platform/downloads, rewritten e2e suite.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 23:37:23 -04:00

156 lines
7.0 KiB
TypeScript

import type { IconName } from "../components/pixel";
export const description =
"AgentCompany is a local-first desktop app for running an autonomous AI company. Set a goal; an AI CEO hires a team, delegates real work, and the goal only closes when an isolated auditor approves the evidence.";
export const nav = [
{ label: "Quests", href: "#quests" },
{ label: "Party", href: "#party" },
{ label: "Items", href: "#items" },
{ label: "Save", href: "#save-point" },
];
export type Quest = { stage: string; title: string; icon: IconName; body: string; optional?: boolean };
export const quests: Quest[] = [
{ stage: "1-1", title: "Start", icon: "flag", body: "Pick English or 简体中文 and press Get started. The wizard runs once, on first launch." },
{ stage: "1-2", title: "Provider", icon: "key", body: "Bind one model provider: paste an API key or sign in with a plan you already pay for. Keys are encrypted with your OS secure storage and kept on your machine." },
{ stage: "1-3", title: "Company", icon: "building", body: "Name the company, name yourself as the human board chair, describe the business, and optionally bind a workspace folder." },
{ stage: "1-4", title: "Mode", icon: "sword", body: "Choose how much rope the CEO gets: AI CEO or AI Co-Founder. Character select is just below." },
{ stage: "1-5", title: "Goal", icon: "map", body: "State the first goal and its acceptance criteria, then hit Launch. The CEO starts hiring." },
{ stage: "1-6", title: "Connectors", icon: "plug", body: "Bring your own Composio key and connect the toolkits your project enables. Optional side quest: Skip works.", optional: true },
];
export type Mode = {
id: "ceo" | "cofounder";
name: string;
className: string;
icon: IconName;
pitch: string;
stats: { label: string; value: string }[];
special: string;
};
export const modes: Mode[] = [
{
id: "ceo",
name: "AI CEO",
className: "Autonomous",
icon: "trophy",
pitch: "Runs on its own: approves its risky work and large hires, and writes deliverables without review.",
stats: [
{ label: "Risky work", value: "Self-approved" },
{ label: "Large hires", value: "Self-approved" },
{ label: "Deliverables", value: "Ship unreviewed" },
],
special: "Speedrun. You watch; it plays.",
},
{
id: "cofounder",
name: "AI Co-Founder",
className: "Co-op",
icon: "heart",
pitch: "Checks with you: risky work and large hires wait for you, and deliverables wait for your review.",
stats: [
{ label: "Risky work", value: "Your Approvals" },
{ label: "Large hires", value: "Your Approvals" },
{ label: "Deliverables", value: "Your review" },
],
special: "Player 2 has the controller for the big calls.",
},
];
export const items: { icon: IconName; name: string; description: string }[] = [
{ icon: "building", name: "Pixel office", description: "An isometric office where you watch agents walk between desks, coffee and meetings. The lighting follows your real clock." },
{ icon: "chat", name: "CEO chat", description: "Messages between agents and with you, with the CEO's line pinned on top. Chat follows the app language." },
{ icon: "approve", name: "Audited goals", description: "A goal only ends when an isolated auditor approves the evidence. No 'trust me, it's done'." },
{ icon: "check", name: "Approvals", description: "In Co-Founder mode, risky work and large hires queue here until you say yes." },
{ icon: "folder", name: "Files & library", description: "Every file the team produces, plus a library of docs and knowledge your agents can read." },
{ icon: "plug", name: "Connectors", description: "Your own Composio key unlocks the toolkits your Composio project enables. logo.dev keeps the logos crisp." },
{ icon: "sparkle", name: "Skills", description: "Agents carry the skills you grant them, plus an automatic humanizer house style for conversational writing." },
{ icon: "book", name: "EN / 中文", description: "The whole app speaks English and 简体中文. Switch any time." },
{ icon: "lock", name: "Local-first vault", description: "Keys encrypted with your OS secure storage, data in SQLite on your machine, no account to create." },
];
export type PartyClass = { name: string; badge: string; icon: IconName; blurb: string; members: string[] };
export const party: PartyClass[] = [
{
name: "API key",
badge: "Key",
icon: "key",
blurb: "Paste a key and go. OpenAI defaults to gpt-6.1-sol.",
members: ["OpenAI", "Anthropic", "xAI Grok", "Groq", "Mistral", "Cerebras", "OpenRouter", "Kimi", "Kimi CN"],
},
{
name: "Plan sign-in",
badge: "Sign-in",
icon: "user",
blurb: "Use a subscription you already have.",
members: ["Claude Pro/Max", "GitHub Copilot", "Kimi Code", "GPT account (ChatGPT plan)"],
},
{
name: "Cloud",
badge: "Cloud",
icon: "building",
blurb: "Run through your company's cloud.",
members: ["Azure OpenAI", "AWS Bedrock", "Vertex AI"],
},
{
name: "Custom",
badge: "Base URL",
icon: "settings",
blurb: "Anything that speaks a familiar protocol.",
members: ["OpenAI-compatible endpoint", "Anthropic-compatible endpoint"],
},
];
export const faqs: { question: string; answer: string[] }[] = [
{
question: "Where do my API keys go?",
answer: [
"Encrypted with your OS secure storage (Keychain, DPAPI or libsecret) and saved in a SQLite database on your machine, next to the company itself.",
"No account, no sign-up. The app talks to the providers you pick, plus the web when agents search or fetch pages, and Composio if you connect it.",
],
},
{
question: "Which AI providers can join?",
answer: [
"OpenAI, Anthropic, Claude Pro/Max, xAI Grok, Groq, Mistral, Cerebras, OpenRouter, Kimi, Kimi CN, GitHub Copilot, a GPT account on a ChatGPT plan, and Kimi Code.",
"Also Azure OpenAI, AWS Bedrock, Vertex AI, and any custom OpenAI- or Anthropic-compatible endpoint.",
],
},
{
question: "Is the macOS build signed?",
answer: [
"Yes. The DMG and ZIP are signed with a Developer ID and notarized by Apple, so Gatekeeper opens them without a fight.",
"Apple Silicon and Intel each get their own build.",
],
},
{
question: "What runs on Linux?",
answer: ["An AppImage and a .deb package, both x64. Pick whichever your distro likes better."],
},
{
question: "Where does the source live?",
answer: [
"On Gitea at git.zacharyzhang.com. GitHub is no longer used.",
"Want to help? Open an AGit pull request on that Gitea. Push to refs/for/main and you're in the party.",
],
},
{
question: "When is a goal actually done?",
answer: [
"When an isolated auditor looks at the evidence and approves it. The CEO can't mark its own homework.",
],
},
];
export const credits: { role: string; name: string }[] = [
{ role: "Starring", name: "Your AI CEO" },
{ role: "Supporting cast", name: "Whoever it hires" },
{ role: "Auditor", name: "Isolated. Unbribable." },
{ role: "Board chair", name: "You" },
{ role: "Guide", name: "Bit, the intern" },
];