Skip to content

Bug: ov add-skill misclassifies localhost Docker servers as local filesystem access #959

@qin-ctx

Description

@qin-ctx

Summary

When ov targets an OpenViking server exposed on localhost but actually running inside Docker, ov add-skill ./SKILL.md treats the server as local and sends the host path string directly instead of uploading the file. The container cannot read that host path, so the server falls through to parsing the path text as raw SKILL content and returns a misleading SKILL.md must have YAML frontmatter error.

Environment

  • OpenViking server: 0.2.9 in Docker
  • CLI: reproducible with newer ov builds that use localhost/127.0.0.1 hostname checks
  • Host OS: macOS/Linux host with containerized server

Steps To Reproduce

  1. Start OpenViking server inside Docker and publish it to http://localhost:<port>.
  2. Keep SKILL.md only on the host filesystem.
  3. Run ov --url http://localhost:<port> add-skill ./SKILL.md from the host.

Actual Behavior

The CLI skips temp upload because it only checks whether the configured host is localhost/127.0.0.1. It posts {"data":"./SKILL.md"} to /api/v1/skills, the server cannot resolve that path inside the container, and the request eventually fails with SKILL.md must have YAML frontmatter.

Expected Behavior

The CLI should upload the file whenever the server does not share the caller filesystem, even if the endpoint hostname is localhost. At minimum, the server should return a clear file-not-found / inaccessible-path error instead of a frontmatter parse error.

Notes

Current CLI logic appears to rely only on hostname matching for is_local_server(), which is insufficient for Docker and other localhost-forwarded deployments.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions