Skip to content

Support Torch Object Storage from VolcanoEngine #59

Closed

Description

@Alex1990

Activity

  1. github-actions commented on Sep 18, 2026

    @github-actions
    Contributor

    Loop triage — feature / ready-for-agent (confidence: high)

    TOS is not covered by the existing tiny-oss/aws entry, so this needs a provider entry (the repo's usual pattern).

    What the TOS docs say (verified against docs.volcengine.com):

    • There is a dedicated S3-compatible endpoint — tos-s3-<region>.volces.com, e.g. tos-s3-cn-beijing.volces.com — which must be used for S3-protocol access.
    • Only Signature V4 is supported (no V2).
    • Virtual-hosted style only; path-style is explicitly not supported.
    • Region-scoped domains only; regions include cn-beijing, cn-guangzhou, cn-shanghai, cn-hongkong, ap-southeast-1, ap-southeast-3.

    Why tiny-oss/aws doesn't work for it today: with a custom endpoint, resolveAwsHost() (src/aws/host.ts) returns it verbatim and the bucket is only added to the URL path when pathStyle: true (src/aws/request.ts). TOS rejects path-style, and with pathStyle: false the bucket never appears in host or path — so the documented S3-compatible recipe (endpoint + pathStyle: true) can't target TOS.

    Plan for the implementing stage: add a self-contained src/tos/ provider following the src/aws/ / src/cos/ layout (signature, host, request, signatureUrl, index), wire it into tsup.config.ts and package.json exports, and pin the signer with a new test/tos-signature.spec.ts against the official @volcengine/tos-sdk (v2.9.1, MIT) — its native scheme is TOS4-HMAC-SHA256 (service tos, x-tos-* headers), like the other providers' oracle tests. No .github/workflows/** change is involved.

    Labelling ready-for-agent; the loop's feature stage will pick it up. Reopen or say so if you'd rather only document the S3-endpoint workaround instead of adding tiny-oss/tos.

  2. added
    ready-for-humanRequires a human: implementation, merge of a loop PR, or a release call
    and removed
    ready-for-agentFully specified, an AFK agent may handle it unattended
    on Sep 18, 2026
  3. github-actions commented on Sep 18, 2026

    @github-actions
    Contributor

    tiny-oss/tos is implemented — PR opening on branch loop/59-tos (feat: add Volcano Engine TOS provider entry, closes this issue).

    It adds a self-contained TOS entry with the full operation set (put, multipartUpload, putSymlink, signatureUrl, list/copy/abort), signing TOS4-HMAC-SHA256 (service tos, host + x-tos-*, UNSIGNED-PAYLOAD) against virtual-hosted tos-<region>.volces.com hosts. The signer is pinned byte-for-byte against the official @volcengine/tos-sdk@2.9.1 (pnpm test:tos-oracle, also run by test:ci).

    One deliberate detail: TOS's JS SDK puts the endpoint in the pre-signed URL credential scope, which disagrees with the official Go SDK; signatureUrl signs the real region (the JS SDK has no getPreSignedUrl test, and the Go SDK's published vector is used as the oracle for that path). See the PR description for the evidence and the per-provider options (endpoint is the endpoint domain; region is always required).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    ready-for-humanRequires a human: implementation, merge of a loop PR, or a release call

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions