{"id":45915513,"url":"https://github.com/jerrettdavis/jd.ai","last_synced_at":"2026-06-16T02:01:45.871Z","repository":{"id":341107471,"uuid":"1168974016","full_name":"JerrettDavis/JD.AI","owner":"JerrettDavis","description":"AI-powered terminal assistant built on Semantic Kernel.","archived":false,"fork":false,"pushed_at":"2026-04-14T04:14:35.000Z","size":62646,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-14T05:30:57.691Z","etag":null,"topics":["ai","ai-agents","semantic-kernel","tui"],"latest_commit_sha":null,"homepage":"https://jerrettdavis.github.io/JD.AI/","language":"C#","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/JerrettDavis.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-28T02:28:52.000Z","updated_at":"2026-04-14T04:07:25.000Z","dependencies_parsed_at":"2026-03-05T23:01:32.354Z","dependency_job_id":null,"html_url":"https://github.com/JerrettDavis/JD.AI","commit_stats":null,"previous_names":["jerrettdavis/jd.ai"],"tags_count":414,"template":false,"template_full_name":null,"purl":"pkg:github/JerrettDavis/JD.AI","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JerrettDavis%2FJD.AI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JerrettDavis%2FJD.AI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JerrettDavis%2FJD.AI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JerrettDavis%2FJD.AI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JerrettDavis","download_url":"https://codeload.github.com/JerrettDavis/JD.AI/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JerrettDavis%2FJD.AI/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31976805,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T16:27:12.723Z","status":"ssl_error","status_checked_at":"2026-04-18T16:27:11.140Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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","ai-agents","semantic-kernel","tui"],"created_at":"2026-02-28T07:40:11.869Z","updated_at":"2026-04-18T17:01:38.148Z","avatar_url":"https://github.com/JerrettDavis.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# JD.AI\r\n\r\n[![CI](https://github.com/JerrettDavis/JD.AI/actions/workflows/ci.yml/badge.svg)](https://github.com/JerrettDavis/JD.AI/actions/workflows/ci.yml)\r\n[![codecov](https://codecov.io/gh/JerrettDavis/JD.AI/graph/badge.svg)](https://codecov.io/gh/JerrettDavis/JD.AI)\r\n[![NuGet](https://img.shields.io/nuget/v/JD.AI.svg)](https://www.nuget.org/packages/JD.AI)\r\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\r\n![.NET 10](https://img.shields.io/badge/.NET-10.0-512BD4)\r\n\r\nAI-powered terminal assistant and multi-channel platform built on [Semantic Kernel](https://github.com/microsoft/semantic-kernel). 15 AI providers, 27 tool categories, 33+ slash commands, MCP server integration, workflow engine, subagent orchestration, team strategies, and six channel adapters — across 18 projects with 772+ tests.\r\n\r\n![JD.AI terminal startup](docs/images/demo-startup.png)\r\n![JD.AI dashboard overview](docs/images/dashboard/dashboard-overview.png)\r\n\r\n## Architecture\r\n\r\n```\r\n┌──────────────────────────────────────────────┐\r\n│              TUI Client (jdai)               │\r\n│  33+ slash commands · model search · sessions│\r\n└──────────────────────┬───────────────────────┘\r\n                       │\r\n┌──────────────────────▼───────────────────────┐\r\n│         Gateway Control Plane                │\r\n│       (REST API + SignalR Hubs)              │\r\n└──────┬────────────┬────────────┬─────────────┘\r\n       │            │            │\r\n┌──────▼──────┐ ┌───▼──────┐ ┌──▼─────────────┐\r\n│  Telemetry  │ │ Workflows│ │  MCP Servers    │\r\n│ OpenTelemetry│ │  Engine  │ │ (add/list/rm)  │\r\n│ tracing,    │ │ run/list │ │                 │\r\n│ metrics,    │ │ /refine  │ │                 │\r\n│ health      │ │          │ │                 │\r\n└─────────────┘ └──────────┘ └─────────────────┘\r\n       │\r\n┌──────▼──────────────────────────────────────┐\r\n│     Agent Pool + Routing                    │\r\n│  5 subagent types · 4 team strategies       │\r\n│  ConversationTransformer (5 modes)          │\r\n└──────┬──────────────────┬───────────────────┘\r\n       │                  │\r\n┌──────▼──────┐   ┌───────▼───────────┐\r\n│  Channel    │   │  Memory /         │\r\n│  Adapters   │   │  Embeddings       │\r\n│ (6 channels)│   │  (SQLite vectors) │\r\n└─────────────┘   └───────────────────┘\r\n       │\r\n┌──────▼──────────────────────────────────────┐\r\n│   15 AI Providers · 27 Tool Categories      │\r\n│   Plugin SDK · Credential Store · Sessions  │\r\n└─────────────────────────────────────────────┘\r\n```\r\n\r\n## Features\r\n\r\n| Area | Details |\r\n|------|---------|\r\n| **AI Providers** | 15 providers — OAuth, API key, local, and AWS SDK auth (see [table below](#providers)) |\r\n| **Tools** | 27 categories: File, Search, Shell, Git, Web, Web Search, Memory, Subagent, Think, Environment, Tasks, Code Execution, Clipboard, Questions, Diff \u0026 Patch, Batch Edit, Usage Tracking, Multimodal, Code Execution (Sandboxed), Task Management, Scheduling, Notebook, Structured Q\u0026A, Encoding/Crypto, Capability Introspection, Policy/Governance, Session Usage |\r\n| **Slash Commands** | 33+ commands for model management, sessions, providers, workflows, MCP, diagnostics, and more |\r\n| **Subagents** | 5 types: Explore, Task, Plan, Review, General-purpose |\r\n| **Team Orchestration** | 9 strategies: Sequential, Fan-Out, Supervisor, Debate, Voting, Pipeline, MapReduce, Relay, Blackboard |\r\n| **MCP Integration** | `/mcp add`, `/mcp list`, `/mcp remove` — connect external tool servers |\r\n| **Workflows** | `/workflow run`, `/workflow list`, `/workflow refine` — composable multi-step automation |\r\n| **Dynamic Switching** | 5-mode ConversationTransformer (Preserve, Compact, Transform, Fresh, Cancel) with fork points |\r\n| **Model Search** | `/model search` across Ollama, HuggingFace, and Foundry Local remote catalogs |\r\n| **Session Persistence** | SQLite-backed history, model switch tracking, fork points; `--continue`/`--resume` restores model state |\r\n| **Git Checkpointing** | Stash, directory, and commit strategies for safe rollback |\r\n| **Credentials** | Encrypted credential store (DPAPI/AES); `/provider add` wizard |\r\n| **Global Defaults** | `~/.jdai/config.json` with per-project overrides via AtomicConfigStore |\r\n| **Observability** | OpenTelemetry tracing, metrics, and health checks (JD.AI.Telemetry) |\r\n| **Dashboard** | Blazor WebAssembly dashboard with MudBlazor UI (JD.AI.Dashboard.Wasm) |\r\n| **Interactive TUI** | Rich TUI Rendering: Spectre.Console rendering with Markdig markdown, syntax highlighting for 10 languages, diff view, slash-command colorization; plus streaming, thinking display, and tab-completion |\r\n\r\n## Quick Start\r\n\r\n```bash\r\ndotnet tool install -g JD.AI   # Install globally\r\njdai setup                      # One-command setup (daemon + onboarding + MCP)\r\njdai                            # Launch the TUI\r\n```\r\n\r\n## First-Class Setup\r\n\r\n`jdai setup` is the recommended, repeatable setup path. It is safe to run multiple times.\r\n\r\nWhat it does:\r\n\r\n- Ensures `jdai-daemon` is installed/updated (unless `--no-update`)\r\n- Installs/refreshes the daemon service and starts it (unless `--no-start`)\r\n- Shows daemon and bridge status\r\n- Runs onboarding (`jdai onboard`) to set provider/model defaults and MCP servers\r\n\r\n```bash\r\n# Full setup (recommended)\r\njdai setup\r\n\r\n# Change provider/model defaults and save globally\r\njdai setup --skip-daemon --provider \"OpenAI Codex\" --model gpt-5.3-codex --global\r\n\r\n# Daemon/gateway only\r\njdai setup --daemon-only\r\n\r\n# Set bridge mode while setting up daemon\r\njdai setup --daemon-only --bridge disable\r\njdai setup --daemon-only --bridge passthrough\r\n```\r\n\r\nSetup flags:\r\n\r\n- `--daemon-only`: run daemon/gateway setup only\r\n- `--skip-daemon`: run onboarding only\r\n- `--skip-onboard`: run daemon/gateway only\r\n- `--no-update`: skip `jdai-daemon` tool install/update\r\n- `--no-start`: do not start the daemon service\r\n- `--bridge \u003cstatus|enable|disable|passthrough\u003e`: set/check bridge mode\r\n- onboarding flags are forwarded: `--provider`, `--model`, `--global`, `--skip-mcp`, `--skip-import`\r\n\r\n\u003e On Windows and Linux, daemon service operations may require elevation.\r\n\u003e `jdai-daemon` will prompt/recommend UAC/sudo as needed.\r\n\r\n## TUI Quick Commands\r\n\r\n```text\r\n/provider add                   # Add an AI provider\r\n/help                           # List all commands\r\n```\r\n\r\n## Screenshots\r\n\r\n**Markdown rendering with syntax highlighting, tables, and slash-command colorization:**\r\n\r\n![TUI markdown rendering](docs/images/demo-rendering.png)\r\n\r\n**Unified diff view with red/green line coloring:**\r\n\r\n![TUI diff view](docs/images/demo-diff-view.png)\r\n\r\n## Providers\r\n\r\n### OAuth / Local (zero API key)\r\n\r\n| Provider | Auth | Notes |\r\n|----------|------|-------|\r\n| Claude Code | OAuth (claude CLI) | Requires `claude` installed |\r\n| GitHub Copilot | OAuth (device flow) | Uses VS Code Copilot token |\r\n| OpenAI Codex | OAuth | Codex CLI authentication |\r\n| Ollama | None (local) | HTTP `localhost:11434` |\r\n| Local Models / LLamaSharp | None (local) | Load `.gguf` files directly |\r\n| Microsoft Foundry Local | None (local) | Microsoft Foundry runtime |\r\n\r\n### API Key\r\n\r\n| Provider | Auth | Notes |\r\n|----------|------|-------|\r\n| OpenAI | API key | GPT-4o, o1, o3, etc. |\r\n| Azure OpenAI | API key | Azure-hosted OpenAI deployments |\r\n| Anthropic | API key | Claude 3.5/4 via Anthropic API |\r\n| Google Gemini | API key | Gemini 2.x models |\r\n| Mistral | API key | Mistral / Mixtral models |\r\n| HuggingFace | API key | Inference API models |\r\n| OpenRouter | API key | Multi-vendor routing — Claude, GPT-4, Gemini, Llama, Mistral |\r\n| OpenAI-Compatible | API key | Groq, Together, DeepSeek, Fireworks, Perplexity |\r\n\r\n### AWS SDK\r\n\r\n| Provider | Auth | Notes |\r\n|----------|------|-------|\r\n| AWS Bedrock | AWS SDK credentials | Claude, Titan, Llama via Bedrock |\r\n\r\n## Key Commands\r\n\r\n| Command | Description |\r\n|---------|-------------|\r\n| `/help` | List all available commands |\r\n| `/model` | Show or switch the active model |\r\n| `/model search \u003cquery\u003e` | Search Ollama, HuggingFace, Foundry Local catalogs |\r\n| `/models` | List available models for the current provider |\r\n| `/provider` | Show or switch the active provider |\r\n| `/providers` | List all configured providers |\r\n| `/provider add` | Interactive provider setup wizard |\r\n| `/default provider \u003cname\u003e` | Set default provider |\r\n| `/default model \u003cname\u003e` | Set default model |\r\n| `/compact` | Compact conversation context |\r\n| `/save` | Save the current session |\r\n| `/sessions` | List saved sessions |\r\n| `/resume` | Resume a saved session (restores model state) |\r\n| `/fork` | Fork conversation at the current point |\r\n| `/cost` | Show token usage and estimated cost |\r\n| `/mcp add \u003curl\u003e` | Register an MCP tool server |\r\n| `/workflow run \u003cname\u003e` | Execute a named workflow |\r\n| `/autorun` | Toggle automatic tool execution |\r\n| `/doctor` | Run environment diagnostics |\r\n| `/export` | Export conversation to file |\r\n\r\nRun `/help` in the TUI for the complete list.\r\n\r\n## Gateway \u0026 Channels\r\n\r\nThe **Gateway** (`JD.AI.Gateway`) is an ASP.NET Core control plane exposing REST endpoints and SignalR hubs for real-time agent communication, authentication, rate limiting, and plugin orchestration.\r\n\r\nSix channel adapters connect the agent pool to external platforms:\r\n\r\n| Channel | Technology |\r\n|---------|------------|\r\n| Discord | Discord.Net — guilds, DMs, threads |\r\n| Signal | signal-cli JSON-RPC bridge |\r\n| Slack | SlackNet Socket Mode |\r\n| Telegram | Telegram.Bot SDK |\r\n| WebChat | SignalR browser client |\r\n| OpenClaw | Cross-gateway HTTP forwarding |\r\n\r\nSee the [Gateway API docs](docs/developer-guide/gateway-api.md) and [Channel Adapters guide](docs/developer-guide/channels.md).\r\n\r\n## Project Structure\r\n\r\n```\r\nsrc/\r\n├── JD.AI                      # TUI client (dotnet tool)\r\n├── JD.AI.Core                 # Agents, providers, sessions, tools, memory, event bus\r\n├── JD.AI.Gateway              # ASP.NET Core control plane (REST + SignalR)\r\n├── JD.AI.Daemon               # Background service host (Windows/Linux)\r\n├── JD.AI.Plugins.SDK          # Plugin interface library\r\n├── JD.AI.Workflows            # Workflow engine (run/list/refine)\r\n├── JD.AI.SpecSite             # UPSS static-site generator (HTML + DocFX content)\r\n├── JD.AI.Telemetry            # OpenTelemetry tracing, metrics, health checks\r\n├── JD.AI.Dashboard.Wasm       # Blazor WASM dashboard (MudBlazor)\r\n├── JD.AI.Channels.Discord     # Discord adapter\r\n├── JD.AI.Channels.Signal      # Signal adapter\r\n├── JD.AI.Channels.Slack       # Slack adapter\r\n├── JD.AI.Channels.Telegram    # Telegram adapter\r\n├── JD.AI.Channels.Web         # WebChat adapter\r\n└── JD.AI.Channels.OpenClaw    # OpenClaw bridge adapter\r\ntests/\r\n├── JD.AI.Tests                # Core unit tests\r\n├── JD.AI.Gateway.Tests        # Gateway unit tests\r\n├── JD.AI.Workflows.Tests      # Workflow engine tests\r\n└── JD.AI.IntegrationTests     # End-to-end integration tests\r\n```\r\n\r\n## Dependencies\r\n\r\n| Package | Purpose |\r\n|---------|---------|\r\n| [JD.SemanticKernel.Extensions](https://github.com/JerrettDavis/JD.SemanticKernel.Extensions) | Compaction, memory, skills, hooks |\r\n| [JD.SemanticKernel.Extensions.Mcp](https://www.nuget.org/packages/JD.SemanticKernel.Extensions.Mcp) | MCP server integration |\r\n| [JD.SemanticKernel.Connectors.ClaudeCode](https://www.nuget.org/packages/JD.SemanticKernel.Connectors.ClaudeCode) | Claude Code OAuth connector |\r\n| [JD.SemanticKernel.Connectors.GitHubCopilot](https://www.nuget.org/packages/JD.SemanticKernel.Connectors.GitHubCopilot) | GitHub Copilot OAuth connector |\r\n| [JD.SemanticKernel.Connectors.OpenAICodex](https://www.nuget.org/packages/JD.SemanticKernel.Connectors.OpenAICodex) | OpenAI Codex OAuth connector |\r\n| [Microsoft.SemanticKernel](https://www.nuget.org/packages/Microsoft.SemanticKernel) | Core AI orchestration (v1.72.0) |\r\n| [LLamaSharp](https://www.nuget.org/packages/LLamaSharp) | Local GGUF model inference |\r\n| [OpenTelemetry](https://www.nuget.org/packages/OpenTelemetry.Extensions.Hosting) | Distributed tracing and metrics |\r\n| [MudBlazor](https://www.nuget.org/packages/MudBlazor) | Dashboard UI components |\r\n\r\n## Documentation\r\n\r\nFull documentation is built with [docfx](https://dotnet.github.io/docfx/) and published from the `docs/` directory.\r\n\r\n- [API Reference](docs/api/) — Auto-generated from XML doc comments\r\n- [User Guide](docs/user-guide/) — Installation, commands, workflows, best practices\r\n- [Developer Guide](docs/developer-guide/) — Architecture, custom tools, plugins, gateway API\r\n- [Operations](docs/operations/) — Deployment, observability, security, governance\r\n- [Reference](docs/reference/) — CLI flags, commands, tools, providers, environment variables\r\n- [Specifications](docs/specs/generated/) — Generated UPSS portal content\r\n\r\n## Contributing\r\n\r\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines. The project uses central package management, Nerdbank.GitVersioning, and enforces code style via Meziantou.Analyzer.\r\n\r\n## License\r\n\r\n[MIT](LICENSE) © JD\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjerrettdavis%2Fjd.ai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjerrettdavis%2Fjd.ai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjerrettdavis%2Fjd.ai/lists"}