---
title: "ResolveProject"
method: POST
path: "/kythene.v1.KytheneService/ResolveProject"
tags: ["kythene.v1.KytheneService"]
---

# ResolveProject

`POST /kythene.v1.KytheneService/ResolveProject`

## Request

- Base URL: `https://kythene.com` (the document declares no server; this is the origin it was published from)
- URL: `https://kythene.com/kythene.v1.KytheneService/ResolveProject`
- Auth: none required

ResolveProject maps a working directory to the Kythene project(s) it
 belongs to, so a session brief has something to brief about without a
 human naming the project.

## Headers

- `Connect-Protocol-Version` 1, required: Define the version of the Connect protocol
- `Connect-Timeout-Ms` number: Define the timeout, in ms

## Request body

- KytheneV1ResolveProjectRequest
  - `marker` string: marker is the verbatim contents of a .kythene file at the working directory root, if the client found one. It names the workspace and project explicitly and is authoritative. Format: `key: value` lines, keys `workspace` and `project` (workspace optional; an id or name).
  - `gitRemote` string: git_remote is the origin remote URL of the repo, if any - e.g. https://github.com/acme/widgets or git@host:acme/widgets.git. The owner/repo and repo name are matched against project names.
  - `dir` string: dir is the working directory's basename - the weakest signal, used only when the marker and remote produce nothing.

## Response `200`

Success

- KytheneV1ResolveProjectResponse
  - `matches` KytheneV1ResolveProjectMatch[]: matches, most confident first. A repo can map to more than one project and a project can span repos, so this is a list. Empty when nothing matched confidently - briefing the wrong project reads as authoritative, so no guess is returned.
    - `workspaceId` string
    - `workspaceName` string
    - `project` string: project is the resolved project (tag) name; project_id its tag id.
    - `projectId` string
    - `confidence` string: confidence is "high" (an explicit .kythene marker), "medium" (matched the git remote's owner/repo or repo name) or "low" (matched the directory name).
    - `via` string: via names the signal that matched: "marker", "remote" or "dir".

## Other responses

- `default`: Error

---

[API](https://skmtc.dev/kythene/apis/kythene-v1.md) · [All operations](https://skmtc.dev/kythene/apis/kythene-v1/llms.txt) · [OpenAPI document](https://skmtc.dev/kythene/apis/kythene-v1/revisions/5a768e642d10?raw)
