{
  "edition": {
    "edition": "2026-09-06-draft-01",
    "language": "en",
    "publicationState": "published",
    "sourceRevision": "a7e788eb4b151fd92c1f58153e015773e3a829af",
    "projectCount": 67,
    "documentCount": 94,
    "skillCount": 10,
    "archivePath": "library.zip",
    "archiveBytes": 181812,
    "releasedAt": "2026-09-08T05:03:11.129+00:00"
  },
  "access": {
    "released": true,
    "rehearsal": false
  },
  "project": "desktop/byok-chat.md",
  "markdown": "https://legion.tw/api/projects/packet.md/desktop/byok-chat.md?edition=2026-09-06-draft-01",
  "documents": [
    {
      "path": "desktop/README.md",
      "text": "# Native desktop applications\n\n[All project types](../README.md) · [Shared launch](../shared/launch.md)\n\nBuild a native Tauri application around the person's work or interests. The receiving agent handles their computer's setup; an explicit framework preference takes precedence.\n\n## Projects to build\n\n- [Calling and follow-up desk](calling-follow-up-desk.md)\n- [Quote and estimate builder](quote-estimate-builder.md)\n- [Photo-to-report desk with an AI colleague](ai-photo-report-desk.md)\n- [Orders and production board](orders-production-board.md)\n- [Equipment checkout and maintenance book](equipment-checkout-book.md)\n- [Booking and session desk](booking-session-desk.md)\n- [Meme and GIF studio](meme-gif-studio.md)\n- [Soundboard](soundboard.md)\n- [Game-show host](game-show-host.md)\n- [Music playground](music-playground.md)\n- [Animated desktop pet](desktop-pet.md)\n- [Tabletop atmosphere controller](tabletop-atmosphere.md)\n- [Ridiculous tournament simulator](ridiculous-tournament.md)\n- [Personal AI chat app with bring-your-own-key access](byok-chat.md)\n\nThese are instructions for projects you can build with your coding agent.\n"
    },
    {
      "path": "desktop/byok-chat.md",
      "text": "# Build your own AI chat app\n\nBuild a native Tauri chat application with Gemini and OpenRouter access, editable system prompts, and image generation. Build it extremely well as a place where the person can choose how they work with AI. Follow the [shared launch](../shared/launch.md), using another framework if they explicitly prefer it.\n\nThis project deliberately uses the person's own provider API keys. It teaches access from an application they control. Their coding-agent installation remains the way you build it together; the chat app has its own provider connections.\n\n## Help them make the connection\n\nExplain an API key as a credential the app uses to access a provider's service. Help the person obtain their own keys through the providers' current account interfaces, store them appropriately on their computer, and confirm the connection with a modest first request. Explain the relationship between that account, available models, and usage charges. A consumer chat subscription and application API access are separate arrangements.\n\nInspect the providers' current documentation when implementing the connections. Prefer suitable free options where available and explain their limits alongside any paid choice. Give the person a clear way to understand and control spending. Show available usage information honestly, distinguishing reported charges from estimates.\n\nKeep credentials in protected local storage. Give the person a way to replace or remove a key, and explain how to revoke it with the provider if necessary. Their source repository and shareable conversation exports should contain the work they intend to share, with credentials remaining private.\n\n## Make a good place to talk\n\nProvide readable conversations, saved history, clear model selection, and useful control of an ongoing response. The person should know which provider and model they are using, what material they have attached, and whether a request is running, finished, or failed.\n\nLet them return to a conversation, find previous work, and copy or export results. Make long answers and code comfortable to read. Preserve their written message if a request fails so trying again is straightforward.\n\nSupport image inputs with compatible models and image generation through a working provider route. Display generated images at a useful size and let the person save them. Keep the prompt and relevant generation choices with the result so they can return to an idea. Make available actions reflect the selected model's actual capabilities.\n\n## Put the system prompt in their hands\n\nGive the person an accessible place to read, edit, name, and reuse system prompts. Explain that this text helps shape the model's behavior throughout the conversation. Let them understand which prompt is active and when a change will take effect.\n\nMake it easy to start a fresh conversation from a saved prompt or compare a variation without losing the original. They might build a language-practice partner, a writing collaborator, or a patient guide to an unfamiliar subject. Help them describe the behavior and working relationship they want.\n\nKeep model identity and prompt choices understandable in saved conversations. A comparison is more useful when the person can tell what they changed. Encourage them to look at the explanation and behavior they receive, not just the model's name.\n\n## Use the app to learn something\n\nDeliver the installed application with both provider connections supported and image generation working through an appropriate available model. Use the person's chosen access, explain any remaining account-dependent capability, and keep ordinary chat useful independently of it.\n\nTry a conversation, revise a system prompt, compare the effect in a fresh conversation, and generate an image. Save and reopen the work. Judge the interface through these activities and improve the places where it makes the person's choices hard to understand.\n\nExplain the distinct jobs of the application, the model, the provider, and the system prompt. The person should leave knowing what an API key gives their software access to and how to experiment with AI behavior themselves.\n\nA later phone companion can connect to the same working system. Preserve conversations, prompt collections, and credential ownership as the interface expands to another device.\n"
    }
  ]
}