feat: add a Nebius Token Factory example provider profile
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 82/100
Direção de pesquisa
Leia os perfis de exemplo existentes em providers/ e a lista de IDs esperados em list_provider_profiles_returns_built_in_profile_categories. Adicione providers/nebius-token-factory.yaml no mesmo formato, permitindo as rotas de inferência listadas e excluindo as rotas de gerenciamento mencionadas na issue. O trabalho estará concluído quando o perfil passar pelo lint e for importado, e o teste de categorias de perfil incluir seu ID.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
User Story
I use OpenShell to run coding and research agents in sandboxes, and my models are served by Nebius Token Factory through its OpenAI-compatible API at https://api.tokenfactory.nebius.com/v1. Today I have to hand-write a provider profile for it, and the obvious copy of the openai profile with the host swapped would hand my agents a key that can also create dedicated endpoints and fine-tuning jobs on my account.
Problem Statement
providers/ has no example profile for Nebius Token Factory. Operators who use it have to write one from scratch and decide on their own which parts of the Token Factory API a sandboxed agent should reach.
Impact / Why This Matters
A Token Factory API key works on more than inference. On the same host it can list, upload, and delete files and datasets, start fine-tuning jobs and batch operations, and create, update, or delete dedicated endpoints, which are billable GPU deployments. A profile that grants the whole host, like the existing openai, nvidia, and deepinfra examples, lets a sandboxed agent use the injected key for all of that. Operators who don't read the API reference closely will not notice.
Proposed Design
Add providers/nebius-token-factory.yaml, following the format of the other example profiles:
id: nebius-token-factory
display_name: Nebius Token Factory
category: inference
inference_capable: true
credentials:
- name: api_key
env_vars: [NEBIUS_API_KEY]
auth_style: bearer
header_name: authorization
endpoints:
- host: api.tokenfactory.nebius.com
port: 443
protocol: rest
enforcement: enforce
rules:
- allow: { method: POST, path: "/v1/chat/completions" }
- allow: { method: POST, path: "/v1/completions" }
- allow: { method: POST, path: "/v1/embeddings" }
- allow: { method: POST, path: "/v1/rerank" }
- allow: { method: POST, path: "/v1/responses" }
- allow: { method: GET, path: "/v1/models" }
binaries: [/usr/bin/curl, /usr/local/bin/curl]
Workflow:
openshell provider profile import -f providers/nebius-token-factory.yaml --global
openshell provider create --name nebius --type nebius-token-factory --credential NEBIUS_API_KEY
openshell sandbox create --provider nebius -- curl -sS https://api.tokenfactory.nebius.com/v1/models
NEBIUS_API_KEY matches the variable name in the Token Factory documentation.
Acceptance Criteria
-
providers/nebius-token-factory.yamllints and imports, and has the same header block as the other examples (client binaries, reference layout, credential scope, endpoint access, smoke test). - A sandbox with the provider attached can call chat completions (streaming included), completions, embeddings, rerank, the Responses API, and the model list.
- In that sandbox, requests to the files, datasets, fine-tuning, operations, and dedicated-endpoint APIs are denied by the proxy.
- No telemetry or provider-table changes are needed, in line with #3906.
Alternatives Considered
- Leave it to operators to copy the
openaiprofile and change the host. That gives agents the whole Token Factory API, as described above. - Grant
/v1/**read-write. This is simpler, but it still allows file, dataset, fine-tuning, and operation calls, and it would allow new management routes added under/v1later. - An endpointless profile bound per sandbox from policy. That suits per-deployment hosts, but Token Factory has a single public host, so a fixed endpoint is simpler for operators.
Agent Investigation
- Profiles are import-only examples under
providers/. Adding one changes only the YAML and the expected-ID list inlist_provider_profiles_returns_built_in_profile_categories, as in #3904. - I listed the routes from Token Factory's published OpenAPI spec (
https://api.tokenfactory.nebius.com/openapi.json). Inference routes are the ones above. Management routes are under/v1/files,/v1/datasets,/v1/fine_tuning,/v1/operations, and/v0/dedicated_endpoints.
- Linguagem predominante
- Rust
- Estrelas
- 17.1k
- Forks
- 1.8k
- Merge médio
- 2d 8h
- PRs com merge (30d)
- 370
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de NVIDIA/OpenShell
-
bug(install): install.sh prints gawk "escape sequence \. treated as plain ." warnings on RPM hostsTalvez já em andamento @ericcurtin assumiu hoje. Abertastate:triage-needed
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
Mantenedores costumam responder em até 1 dia
-
bug(sdk/go): browser login callback binds 127.0.0.1 but redirect_uri uses localhostTalvez livre de novo Um pull request para esta issue foi fechado sem ser mesclado. Abertastate:triage-needed
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
NVIDIA/OpenShell#4518 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
state:triage-needed
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
Mantenedores costumam responder em até 1 dia
-
bug(sdk/go): edge (Cloudflare Access) token is cached for the client lifetime and never reloadedAbertastate:triage-needed
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
NVIDIA/OpenShell#4515 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
state:triage-needed
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
Mantenedores costumam responder em até 1 dia
Todas as issues de NVIDIA/OpenShell
Issues semelhantes
-
good first issue help wanted r-feature
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
servo/rust-smallvec#792 ·
Mantenedores costumam responder em até 1 dia
-
A-Unicode C-bug P-low
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
rust-lang/rustfmt#7210 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 1/5 1-3 horas Facilidade para iniciantes 86/100
Mantenedores costumam responder em até 1 dia
-
area:sim good first issue kind:feature
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 87/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 66/100
bitcoindevkit/bdk#2432 ·
Mantenedores costumam responder em até 3 dias