{"id":49764406,"url":"https://github.com/jimmy-guzman/comal.dev","last_synced_at":"2026-05-11T10:18:23.807Z","repository":{"id":355724046,"uuid":"1216247114","full_name":"jimmy-guzman/comal.dev","owner":"jimmy-guzman","description":"Create AI agents that are yours. Pick a model, write a system prompt, attach some tools, and start chatting.","archived":false,"fork":false,"pushed_at":"2026-05-04T23:47:49.000Z","size":1142,"stargazers_count":0,"open_issues_count":8,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-05T01:31:09.389Z","etag":null,"topics":["ai","better-auth","bun","drizzle","neondb","nextjs","radix-ui","shadcn","tailwind","upstash"],"latest_commit_sha":null,"homepage":"https://comal-dev.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jimmy-guzman.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-20T18:04:06.000Z","updated_at":"2026-05-04T13:35:24.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jimmy-guzman/comal.dev","commit_stats":null,"previous_names":["jimmy-guzman/comal.dev"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/jimmy-guzman/comal.dev","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jimmy-guzman%2Fcomal.dev","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jimmy-guzman%2Fcomal.dev/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jimmy-guzman%2Fcomal.dev/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jimmy-guzman%2Fcomal.dev/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jimmy-guzman","download_url":"https://codeload.github.com/jimmy-guzman/comal.dev/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jimmy-guzman%2Fcomal.dev/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32890272,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-10T13:40:02.631Z","status":"online","status_checked_at":"2026-05-11T02:00:05.975Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","better-auth","bun","drizzle","neondb","nextjs","radix-ui","shadcn","tailwind","upstash"],"created_at":"2026-05-11T10:18:22.751Z","updated_at":"2026-05-11T10:18:23.799Z","avatar_url":"https://github.com/jimmy-guzman.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# comal.dev\n\nCreate AI agents that are yours. Pick a model, write a system prompt, attach some tools, and start chatting.\n\n## About\n\nA web app for building private, runtime-defined AI agents. The system prompt, model choice, and tool selection are all per-agent and stored under your account. You can start chatting anonymously and sign in with GitHub if you want to keep the history.\n\n## Architecture\n\nHow a chat request flows through the app:\n\n```mermaid\nflowchart TB\n  User([User])\n\n  subgraph Browser\n    UI[Next.js UI\u003cbr/\u003echat + agent forms]\n  end\n\n  subgraph Server[Next.js server]\n    Proxy[proxy.ts\u003cbr/\u003eanonymous session bootstrap]\n    Actions[Server actions\u003cbr/\u003eagent + conversation CRUD]\n    ChatAPI[/api/chat route/]\n    Loader[loadAgent\u003cbr/\u003ecomposes agent + tools]\n    Registry[Tool registry\u003cbr/\u003ecore / web / github / tmdb / agents]\n  end\n\n  subgraph External\n    OpenRouter[OpenRouter\u003cbr/\u003eLLM provider]\n    Tavily[Tavily]\n    GitHub[GitHub API]\n    TMDB[TMDB API]\n  end\n\n  subgraph Data\n    Neon[(Neon Postgres\u003cbr/\u003eDrizzle)]\n    Redis[(Upstash Redis\u003cbr/\u003erate limit)]\n    Auth[Better Auth]\n  end\n\n  User --\u003e UI\n  UI --\u003e Proxy\n  UI --\u003e Actions\n  UI --\u003e|stream| ChatAPI\n\n  Proxy --\u003e Auth\n  Actions --\u003e Auth\n  Actions --\u003e Neon\n  ChatAPI --\u003e Auth\n  ChatAPI --\u003e Redis\n  ChatAPI --\u003e Loader\n  Loader --\u003e Neon\n  Loader --\u003e Registry\n  Loader -.-\u003e|recurses for sub-agents| Loader\n  ChatAPI --\u003e OpenRouter\n  ChatAPI --\u003e Neon\n\n  Registry -.-\u003e Tavily\n  Registry -.-\u003e GitHub\n  Registry -.-\u003e TMDB\n```\n\n## Features\n\n- Private agents with custom system prompts\n- Any model available through OpenRouter\n- Full access without an account - anonymous sessions get the same features as signed-in users, just not persistent across devices\n- Streaming chat with markdown, code, math, mermaid\n- Approval-gated tools that pause and ask before running\n- Conversation history with per-conversation model switching\n- Sub-agents: let an agent call other agents you own as tools\n- Evals: attach input/expected pairs to an agent, pick a scorer (contains, exact, or Levenshtein), and run them on demand to track how well the agent performs\n- Conversational agent management via Comal, a system agent that can create and configure agents through chat\n\n## Tools\n\n- **Current time** — Returns the current date and time in the user's timezone.\n- **Web search** — Searches the web (via Tavily) and returns a list of titles, URLs, and snippets.\n- **Web fetch** — Fetches the contents of a URL and returns it as markdown, text, or HTML.\n- **GitHub read** — Reads files from public GitHub repositories in batch.\n- **TMDB search** — Searches TMDB across movies, TV, and people in a single request.\n- **TMDB trending** — Lists what's trending across movies, TV, and people on TMDB.\n- **TMDB trending movies** — Lists trending movies on TMDB.\n- **TMDB trending TV** — Lists trending TV series on TMDB.\n- **TMDB discover movies** — Discovers movies on TMDB by genre, year, language, and sort order.\n- **TMDB discover TV** — Discovers TV series on TMDB by genre, first-air year, language, and sort order.\n- **TMDB movie details** — Fetches full TMDB metadata for a movie by id.\n- **TMDB TV details** — Fetches full TMDB metadata for a TV series by id.\n- List all agents owned by the current user.\n- Get full configuration for a specific agent.\n- List the tool registry with IDs, names, and descriptions.\n- List available model providers and their models.\n- Create a new agent with smart defaults and tool name resolution.\n- Update an existing agent's configuration.\n- Delete an agent owned by the current user.\n\nAgents can also call other agents you own as sub-agent tools, configured per-agent in the agent form. New users start with Comal, a system agent that can create and configure other agents through conversation.\n\n## Tech stack\n\n- Next.js 16\n- React 19\n- TypeScript\n- Tailwind CSS v4\n- shadcn/ui\n- Better Auth\n- Drizzle ORM + Neon Postgres\n- Vercel AI SDK + OpenRouter\n- Upstash Redis\n- next-safe-action\n- TanStack Form\n- Bun\n\n## Getting started\n\n1. `bun install`\n2. Copy `.env.example` to `.env` and fill in:\n   - `DATABASE_URL`\n   - `BETTER_AUTH_SECRET`\n   - `BETTER_AUTH_URL` (optional locally; pin only if you need a canonical URL)\n   - `GITHUB_CLIENT_ID` / `GITHUB_CLIENT_SECRET`\n   - `OPENROUTER_API_KEY`\n   - `TAVILY_API_KEY`\n   - `TMDB_READ_ACCESS_TOKEN`\n   - `UPSTASH_REDIS_REST_URL` / `UPSTASH_REDIS_REST_TOKEN`\n3. `bun run db:push`\n4. `bun dev`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjimmy-guzman%2Fcomal.dev","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjimmy-guzman%2Fcomal.dev","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjimmy-guzman%2Fcomal.dev/lists"}