English | 简体中文
EventHorizon is a Code Agent project developed based on the Microsoft Agent Framework.
If you just want to use the published version of EventHorizon, you can quickly install it globally via the .NET Core CLI:
dotnet tool install --global EventHorizon
After installation, start EventHorizon with: eventhorizon
You should see the Web UI
Note: After launching for the first time, you need to go to Settings in the upper right corner of the Web UI to configure your Provider.
Configure providers from the Web UI under Settings -> Providers.
The application supports these provider types:
openaiopenai-compatibleazure-openaianthropicgemini
For openai, openai-compatible, and azure-openai, the settings UI also shows a separate API type dropdown:
Chat Completions APIResponses API
Internally, those three provider families are stored as six concrete provider type values:
openai-chat-completionsopenai-responsesopenai-compatible-chat-completionsopenai-compatible-responsesazure-openai-chat-completionsazure-openai-responses
Each provider entry includes:
Name: unique provider name shown in the UI and used for default selectionType: provider typeDefaultModel: the model used when a session does not override itAvailable models: optional list of selectable models shown in the UI, one model ID per line
Additional fields depend on the provider type:
API key: required for most providersEndpoint: required foropenai-compatibleandazure-openaiDeployment: supported byazure-openaiUse default Azure credential: supported byazure-openai; useful when you do not want to store an API key locally
Provider behavior notes:
- You can configure multiple providers and choose one as the shared default.
- Sessions can override the global provider and model selection.
- For
openai, chooseChat Completions APIto useGetChatClient(model).AsIChatClient(), orResponses APIto useGetResponsesClient().AsIChatClient(model). - For Azure OpenAI, EventHorizon prefers
Deploymentand falls back toDefaultModelwhen needed. - For
azure-openai, chooseChat Completions APIto useGetChatClient(deployment).AsIChatClient(), orResponses APIto useGetResponsesClient().AsIChatClient(deployment). - For
openai-compatible, use the provider's base endpoint and choose eitherChat Completions APIorResponses APIbased on the endpoint the service exposes.
Example provider settings:
- OpenAI
- Provider:
openai - API type:
Chat Completions APIorResponses API - API key: your OpenAI API key
- Default model:
gpt-4.1-mini
- Provider:
- Azure OpenAI
- Provider:
azure-openai - API type:
Chat Completions APIorResponses API - Endpoint: your Azure OpenAI resource endpoint
- Deployment: your deployment name
- Default model: optional
- API key: optional when
Use default Azure credentialis enabled
- Provider:
- Anthropic
- Type:
anthropic - API key: your Anthropic API key
- Default model:
claude-sonnet-4-0
- Type:
Configure shared skills from the Web UI under Settings -> Skills.
Skills are imported from local folders and stored in a shared skill catalog.
The global skill settings include:
Skill import path: a local folder path to importStorage path: the folder used by EventHorizon to store imported skill metadataImported skills: the shared list of currently imported skillsEnabled: on/off toggle for each imported skill, enabled by default
Skill behavior notes:
- Import validates the target skill folder before saving it into the catalog.
- Enabled imported skills are available as shared capabilities across conversations.
- Disabled imported skills remain in the catalog but are not loaded until they are turned on again.
- A session can also have its own session-scoped skills in addition to shared global skills.
- Removing a global skill updates the shared catalog but does not modify the original source folder.
The backing configuration stores skill data as:
StoragePath: optional custom storage directoryImported: list of imported skills withEnabled,Name,Path,Description, andImportedAt
If StoragePath is not configured, EventHorizon uses its default skill storage location under the user home directory.
EventHorizon now connects to MCP servers over HTTP.
Configure MCP servers from the Web UI under Settings -> MCP.
Each MCP server now uses:
Enabled: on/off toggle, enabled by defaultName: optional display nameHTTP endpoint URL: the MCP server endpoint, for examplehttps://example.com/mcpHTTP headers: optional request headers such asAuthorization=Bearer ...
Enabled MCP servers are connected automatically and exposed to the agent. Disabled MCP servers remain in the configuration but are not connected until they are turned on again.
The backend uses the MCP HTTP client transport and prefers Streamable HTTP, with protocol fallback handled by the MCP client library.
Before you begin, please ensure that your development environment has the following dependencies installed:
The backend is built on the .NET architecture. Please execute the following command in the project root directory:
dotnet run --project src/EventHorizonThe Web UI is used to visualize interactions with the Code Agent and can be run directly from the project root directory:
npm run dev --prefix eventhorizon-workbenchOnce started, you can access the interface by opening http://localhost:5173 in your browser.
Note: After launching for the first time, you need to go to Settings in the upper right corner of the Web UI to configure your Provider. You can also configure shared HTTP MCP servers from the same Settings dialog.