622622</ li >
623623
624624 < li class ="md-nav__item ">
625- < a href ="#example-custom-litellm-server " class ="md-nav__link ">
625+ < a href ="#examples " class ="md-nav__link ">
626626 < span class ="md-ellipsis ">
627- Example: Custom LiteLLM server
628- </ span >
629- </ a >
630-
631- </ li >
632-
633- < li class ="md-nav__item ">
634- < a href ="#example-using-environment-variables " class ="md-nav__link ">
635- < span class ="md-ellipsis ">
636- Example: Using environment variables
637- </ span >
638- </ a >
639-
640- </ li >
641-
642- < li class ="md-nav__item ">
643- < a href ="#example-openrouter " class ="md-nav__link ">
644- < span class ="md-ellipsis ">
645- Example: OpenRouter
646- </ span >
647- </ a >
648-
649- </ li >
650-
651- < li class ="md-nav__item ">
652- < a href ="#example-deepseek " class ="md-nav__link ">
653- < span class ="md-ellipsis ">
654- Example: DeepSeek
627+ Examples
655628 </ span >
656629 </ a >
657630
955928</ li >
956929
957930 < li class ="md-nav__item ">
958- < a href ="#example-custom-litellm-server " class ="md-nav__link ">
959- < span class ="md-ellipsis ">
960- Example: Custom LiteLLM server
961- </ span >
962- </ a >
963-
964- </ li >
965-
966- < li class ="md-nav__item ">
967- < a href ="#example-using-environment-variables " class ="md-nav__link ">
931+ < a href ="#examples " class ="md-nav__link ">
968932 < span class ="md-ellipsis ">
969- Example: Using environment variables
970- </ span >
971- </ a >
972-
973- </ li >
974-
975- < li class ="md-nav__item ">
976- < a href ="#example-openrouter " class ="md-nav__link ">
977- < span class ="md-ellipsis ">
978- Example: OpenRouter
979- </ span >
980- </ a >
981-
982- </ li >
983-
984- < li class ="md-nav__item ">
985- < a href ="#example-deepseek " class ="md-nav__link ">
986- < span class ="md-ellipsis ">
987- Example: DeepSeek
933+ Examples
988934 </ span >
989935 </ a >
990936
12041150</ li >
12051151
12061152 < li class ="md-nav__item ">
1207- < a href ="#example-custom-litellm-server " class ="md-nav__link ">
1208- < span class ="md-ellipsis ">
1209- Example: Custom LiteLLM server
1210- </ span >
1211- </ a >
1212-
1213- </ li >
1214-
1215- < li class ="md-nav__item ">
1216- < a href ="#example-using-environment-variables " class ="md-nav__link ">
1153+ < a href ="#examples " class ="md-nav__link ">
12171154 < span class ="md-ellipsis ">
1218- Example: Using environment variables
1219- </ span >
1220- </ a >
1221-
1222- </ li >
1223-
1224- < li class ="md-nav__item ">
1225- < a href ="#example-openrouter " class ="md-nav__link ">
1226- < span class ="md-ellipsis ">
1227- Example: OpenRouter
1228- </ span >
1229- </ a >
1230-
1231- </ li >
1232-
1233- < li class ="md-nav__item ">
1234- < a href ="#example-deepseek " class ="md-nav__link ">
1235- < span class ="md-ellipsis ">
1236- Example: DeepSeek
1155+ Examples
12371156 </ span >
12381157 </ a >
12391158
@@ -1390,7 +1309,7 @@ <h3 id="api-types-for-custom-providers">API Types for Custom Providers<a class="
13901309< h3 id ="setting-up-a-custom-provider "> Setting up a custom provider< a class ="headerlink " href ="#setting-up-a-custom-provider " title ="Permanent link "> #</ a > </ h3 >
13911310< p > It's possible to configure ECA to be aware of custom LLM providers if they follow a API schema similar to currently supported ones (openai-responses, openai-chat or anthropic), example for a custom hosted litellm server:</ p >
13921311< p > Example:</ p >
1393- < p > < code > ~/.config/eca/config.javascript </ code >
1312+ < p > < code > ~/.config/eca/config.json </ code >
13941313< div class ="highlight "> < pre > < span > </ span > < code > < span class ="p "> {</ span >
13951314< span class ="w "> </ span > < span class ="s2 "> "customProviders"</ span > < span class ="o "> :</ span > < span class ="w "> </ span > < span class ="p "> {</ span >
13961315< span class ="w "> </ span > < span class ="s2 "> "my-company"</ span > < span class ="o "> :</ span > < span class ="w "> </ span > < span class ="p "> {</ span >
@@ -1465,20 +1384,25 @@ <h3 id="custom-provider-configuration-options">Custom provider configuration opt
14651384</ tbody >
14661385</ table >
14671386< p > < em > * Either the < code > url</ code > or < code > urlEnv</ code > option is required, and either the < code > key</ code > or < code > keyEnv</ code > option is required.</ em > </ p >
1468- < h3 id ="example-custom-litellm-server "> Example: Custom LiteLLM server< a class ="headerlink " href ="#example-custom-litellm-server " title ="Permanent link "> #</ a > </ h3 >
1387+ < p > After configuring custom providers, the models will be available as < code > provider/model</ code > (e.g., < code > openrouter/anthropic/claude-3.5-sonnet</ code > , < code > deepseek/deepseek-chat</ code > ).</ p >
1388+ < h3 id ="examples "> Examples< a class ="headerlink " href ="#examples " title ="Permanent link "> #</ a > </ h3 >
1389+ < div class ="tabbed-set tabbed-alternate " data-tabs ="1:4 "> < input checked ="checked " id ="litellm " name ="__tabbed_1 " type ="radio " /> < input id ="environment-variables " name ="__tabbed_1 " type ="radio " /> < input id ="openrouter " name ="__tabbed_1 " type ="radio " /> < input id ="deepseek " name ="__tabbed_1 " type ="radio " /> < div class ="tabbed-labels "> < label for ="litellm "> LiteLLM</ label > < label for ="environment-variables "> Environment variables</ label > < label for ="openrouter "> OpenRouter</ label > < label for ="deepseek "> DeepSeek</ label > </ div >
1390+ < div class ="tabbed-content ">
1391+ < div class ="tabbed-block ">
14691392< div class ="highlight "> < pre > < span > </ span > < code > < span class ="p "> {</ span >
14701393< span class ="w "> </ span > < span class ="s2 "> "customProviders"</ span > < span class ="o "> :</ span > < span class ="w "> </ span > < span class ="p "> {</ span >
14711394< span class ="w "> </ span > < span class ="s2 "> "litellm"</ span > < span class ="o "> :</ span > < span class ="w "> </ span > < span class ="p "> {</ span >
1472- < span class ="w "> </ span > < span class ="s2 "> "api"</ span > < span class ="o "> :</ span > < span class ="w "> </ span > < span class ="s2 "> "openai-responses"</ span > < span class ="p "> ,</ span >
1473- < span class ="w "> </ span > < span class ="s2 "> "url"</ span > < span class ="o "> :</ span > < span class ="w "> </ span > < span class ="s2 "> "https://litellm.my-company.com"</ span > < span class ="p "> ,</ span >
1474- < span class ="w "> </ span > < span class ="s2 "> "key"</ span > < span class ="o "> :</ span > < span class ="w "> </ span > < span class ="s2 "> "your-api-key"</ span > < span class ="p "> ,</ span >
1475- < span class ="w "> </ span > < span class ="s2 "> "models"</ span > < span class ="o "> :</ span > < span class ="w "> </ span > < span class ="p "> [</ span > < span class ="s2 "> "gpt-5"</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="s2 "> "claude-3-sonnet-20240229"</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="s2 "> "llama-3-70b"</ span > < span class ="p "> ],</ span >
1476- < span class ="w "> </ span > < span class ="s2 "> "defaultModel"</ span > < span class ="o "> :</ span > < span class ="w "> </ span > < span class ="s2 "> "gpt-5"</ span >
1395+ < span class ="w "> </ span > < span class ="s2 "> "api"</ span > < span class ="o "> :</ span > < span class ="w "> </ span > < span class ="s2 "> "openai-responses"</ span > < span class ="p "> ,</ span >
1396+ < span class ="w "> </ span > < span class ="s2 "> "url"</ span > < span class ="o "> :</ span > < span class ="w "> </ span > < span class ="s2 "> "https://litellm.my-company.com"</ span > < span class ="p "> ,</ span >
1397+ < span class ="w "> </ span > < span class ="s2 "> "key"</ span > < span class ="o "> :</ span > < span class ="w "> </ span > < span class ="s2 "> "your-api-key"</ span > < span class ="p "> ,</ span >
1398+ < span class ="w "> </ span > < span class ="s2 "> "models"</ span > < span class ="o "> :</ span > < span class ="w "> </ span > < span class ="p "> [</ span > < span class ="s2 "> "gpt-5"</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="s2 "> "claude-3-sonnet-20240229"</ span > < span class ="p "> ,</ span > < span class ="w "> </ span > < span class ="s2 "> "llama-3-70b"</ span > < span class ="p "> ],</ span >
1399+ < span class ="w "> </ span > < span class ="s2 "> "defaultModel"</ span > < span class ="o "> :</ span > < span class ="w "> </ span > < span class ="s2 "> "gpt-5"</ span >
14771400< span class ="w "> </ span > < span class ="p "> }</ span >
14781401< span class ="w "> </ span > < span class ="p "> }</ span >
14791402< span class ="p "> }</ span >
14801403</ code > </ pre > </ div >
1481- < h3 id ="example-using-environment-variables "> Example: Using environment variables< a class ="headerlink " href ="#example-using-environment-variables " title ="Permanent link "> #</ a > </ h3 >
1404+ </ div >
1405+ < div class ="tabbed-block ">
14821406< div class ="highlight "> < pre > < span > </ span > < code > < span class ="p "> {</ span >
14831407< span class ="w "> </ span > < span class ="s2 "> "customProviders"</ span > < span class ="o "> :</ span > < span class ="w "> </ span > < span class ="p "> {</ span >
14841408< span class ="w "> </ span > < span class ="s2 "> "enterprise"</ span > < span class ="o "> :</ span > < span class ="w "> </ span > < span class ="p "> {</ span >
@@ -1491,7 +1415,8 @@ <h3 id="example-using-environment-variables">Example: Using environment variable
14911415< span class ="w "> </ span > < span class ="p "> }</ span >
14921416< span class ="p "> }</ span >
14931417</ code > </ pre > </ div >
1494- < h3 id ="example-openrouter "> Example: OpenRouter< a class ="headerlink " href ="#example-openrouter " title ="Permanent link "> #</ a > </ h3 >
1418+ </ div >
1419+ < div class ="tabbed-block ">
14951420< p > < a href ="https://openrouter.ai "> OpenRouter</ a > provides access to many models through a unified API:</ p >
14961421< div class ="highlight "> < pre > < span > </ span > < code > < span class ="p "> {</ span >
14971422< span class ="w "> </ span > < span class ="s2 "> "customProviders"</ span > < span class ="o "> :</ span > < span class ="w "> </ span > < span class ="p "> {</ span >
@@ -1505,7 +1430,8 @@ <h3 id="example-openrouter">Example: OpenRouter<a class="headerlink" href="#exam
15051430< span class ="w "> </ span > < span class ="p "> }</ span >
15061431< span class ="p "> }</ span >
15071432</ code > </ pre > </ div >
1508- < h3 id ="example-deepseek "> Example: DeepSeek< a class ="headerlink " href ="#example-deepseek " title ="Permanent link "> #</ a > </ h3 >
1433+ </ div >
1434+ < div class ="tabbed-block ">
15091435< p > < a href ="https://deepseek.com "> DeepSeek</ a > offers powerful reasoning and coding models:</ p >
15101436< div class ="highlight "> < pre > < span > </ span > < code > < span class ="p "> {</ span >
15111437< span class ="w "> </ span > < span class ="s2 "> "customProviders"</ span > < span class ="o "> :</ span > < span class ="w "> </ span > < span class ="p "> {</ span >
@@ -1519,7 +1445,9 @@ <h3 id="example-deepseek">Example: DeepSeek<a class="headerlink" href="#example-
15191445< span class ="w "> </ span > < span class ="p "> }</ span >
15201446< span class ="p "> }</ span >
15211447</ code > </ pre > </ div >
1522- < p > After configuring custom providers, the models will be available as < code > provider/model</ code > (e.g., < code > openrouter/anthropic/claude-3.5-sonnet</ code > , < code > deepseek/deepseek-chat</ code > ).</ p >
1448+ </ div >
1449+ </ div >
1450+ </ div >
15231451
15241452
15251453
@@ -1540,7 +1468,7 @@ <h3 id="example-deepseek">Example: DeepSeek<a class="headerlink" href="#example-
15401468 < span class ="md-icon " title ="Last update ">
15411469 < svg xmlns ="http://www.w3.org/2000/svg " viewBox ="0 0 24 24 "> < path d ="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z "/> </ svg >
15421470 </ span >
1543- < span class ="git-revision-date-localized-plugin git-revision-date-localized-plugin-date " title ="August 17, 2025 00:10:51 UTC "> August 17, 2025</ span >
1471+ < span class ="git-revision-date-localized-plugin git-revision-date-localized-plugin-date " title ="August 17, 2025 00:18:50 UTC "> August 17, 2025</ span >
15441472 </ span >
15451473
15461474
0 commit comments