Skip to content
GlxymeshDocs
glxymesh.com
Select theme
Open console
Reading time 3 min

Project layout

Every file in a Glxymesh project for Go, TypeScript and Python, who writes it, whether to commit it, and the naming rules the CLI enforces.

A project is one directory. gx.yml sits at the root, and each tool is one folder under tools/. Only two things change with the language: the package files at the root and the code in each function tool’s folder.

  • Directoryacme-helpdesk/
    • gx.yml
    • package.json
    • pnpm-lock.yaml once package.json lists packages
    • tsconfig.json
    • Directorylib/ optional code shared by several tools
      • …
    • Directorytools/
      • Directoryget-weather/
        • tool.yml an http tool: no code
      • Directorylist-open-issues/
        • tool.yml
        • tool.ts export async function run(ctx, input)
        • tool.gen.ts generated Input type
    • .env.local
    • Directory.glxy/
      • …
    • .gitignore
File What it holds Written by Commit
gx.yml Organization, project, language, server name and description, defaults. See the reference. gxmesh init, then you Yes
package.json · go.mod Packages for every tool in the project You, or pnpm add · go get Yes
pnpm-lock.yaml · go.sum Exact package versions and hashes. In Go, the platform fills in go.sum if you leave it out. Your package manager Yes
requirements.txt Python packages, each pinned to one version with its hashes. Each needs a wheel for Linux arm64 and Python 3.14: no source package is built. uv pip compile requirements.in --generate-hashes --python-version 3.14 --python-platform aarch64-manylinux_2_34 -o requirements.txt Yes
tools/<name>/tool.yml Name, kind, description, inputs, allowed hosts, keys, limits, tests. See the reference. gxmesh new, then you, or Glxymesh’s AI Yes
tool.ts · *.go in a tool’s folder The run function of a function tool, and its helpers You Yes
lib/ · internal/ Code shared by several tools You Yes
tool.gen.ts · input_gen.go Typed inputs generated from tool.yml. Never edit them. gxmesh gen, which dev, call and test also run Yes
.env.local Keys for local runs only, as NAME=value You No
.glxy/ The SDK copy, the local build and caches. Safe to delete. gxmesh No

Packages are declared once per project, not per tool, because every function tool in a project runs in the same function.

A push sends only these files. Anything else in the directory, such as a README or test fixtures, stays on your machine.

Kind Files in its folder
http tool.yml only. A code file beside it fails the push, because nothing would run it.
function tool.yml, the code, and the generated input file
  • The file is tool.yml, exactly. A tool.yaml is reported with a message telling you to rename it, rather than the folder being skipped silently.
  • A tool’s folder name is its name: 1–64 characters of a-z, 0-9 and -, such as list-open-issues. The name: in tool.yml must match it.
  • In Go, the package is the name without hyphens: listopenissues. In Python, the folder is loaded as a package of its own, so from .tool_gen import Input works with the hyphen.
  • The project and organization slugs are 1–40 characters of a-z, 0-9 and single hyphens. A few words the platform uses itself, such as api, docs and support, aren’t allowed.