Skip to main content

Ossature

CI codecov PyPI Downloads

License: MIT Docs Discord

[!WARNING] Ossature is currently in its 0.x series and should be considered unstable. APIs, spec formats, CLI flags, and internal behavior may change significantly between releases without prior deprecation. Pin your version and check the changelog before upgrading.

An open-source build system that turns specs into working code.

You describe what the software should do, review the plan Ossature generates, and build it step by step with an LLM generating the code under tight constraints. Your specs are the source and the generated code is the output, so when requirements change you edit the spec and rebuild only what changed. When a step breaks you fix that step and keep going instead of starting over.

Works with Anthropic, OpenAI, Mistral, Google, and most other hosted providers, as well as local models through Ollama.

Ossature (pronounced OSS-uh-cher) means the underlying framework or skeleton of a structure.

What it does

Ossature works from three kinds of files. Only the spec is required.

  • SMD (spec) states what the software should do: requirements, examples, acceptance criteria.
  • AMD (architecture) states how it fits together: components, their interfaces, and contracts each component has to hold.
  • VMD (verification) holds test cases you write yourself, as concrete inputs and expected results.

The workflow is three commands:

  • ossature validate parses everything and checks it structurally. No LLM involved.
  • ossature audit has an LLM read each spec, flag problems, and generate a build plan you can read and edit before anything runs.
  • ossature build runs the plan task by task. Each task generates a few files, runs its verify command, and on failure enters a fix loop. With review on, an LLM also checks the generated code against the spec and the component contracts before a task is done.

Builds are incremental, so changing one spec only rebuilds the tasks it affects, and an upstream change that leaves a spec's public interface unchanged doesn't pull its dependents along. When a spec has a VMD, the plan includes deterministic test tasks built from your cases. The LLM never sees the expected values, so the code can't be written to fit the tests; it has to actually pass them.

Quick start

Requires Python 3.14+.

uv tool install ossature

Or with pip:

pip install ossature

Set your LLM provider API key:

export ANTHROPIC_API_KEY="sk-ant-..."
# or OPENAI_API_KEY, MISTRAL_API_KEY, etc.

Create and build a project:

ossature init myproject && cd myproject
ossature new my-feature
# edit specs/my-feature.smd
ossature validate
ossature audit
ossature build

The default model is anthropic:claude-sonnet-4-6. To use a different model, set the model field in ossature.toml:

[llm]
model = "openai:gpt-5.2"  # or mistral:devstral-latest, etc.

The API key you export must match the provider in your model string, so use OPENAI_API_KEY for an openai: model. See the configuration docs for per-role overrides and all available options.

Examples

See ossature-examples for complete projects with specs, build plans, and generated code.

Documentation

Full docs at docs.ossature.dev. The workflow guide walks through a complete project from init to generated code.

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ossature-0.2.1.tar.gz (136.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ossature-0.2.1-py3-none-any.whl (185.5 kB view details)

Uploaded Python 3

File details

Details for the file ossature-0.2.1.tar.gz.

File metadata

  • Download URL: ossature-0.2.1.tar.gz
  • Upload date:
  • Size: 136.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for ossature-0.2.1.tar.gz
Algorithm Hash digest
SHA256 118d78c53bf334bb0d2c105c5a91ab38351144f2269f44fb226c7147b8b3934d
MD5 cfbe4e2e2ed13a2a6e19c57e638136f5
BLAKE2b-256 28e3ff72dcd9b7f4aa2a253a9abb2261117fbfd6fb65cc716a4fbe6b9ba5d107

See more details on using hashes here.

Provenance

The following attestation bundles were made for ossature-0.2.1.tar.gz:

Publisher: release.yml on ossature/ossature

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ossature-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: ossature-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 185.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for ossature-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7ac49f53288e0dc118a7da0c8afe9f71bd76b1f57dde003732826c70b76740e4
MD5 a863f86eb636b29f9b9ad82fa8b32829
BLAKE2b-256 3d7fa1e73131c861e2699d2e2960b1f0aa0b4a9e07d950568900dfd87f28416c

See more details on using hashes here.

Provenance

The following attestation bundles were made for ossature-0.2.1-py3-none-any.whl:

Publisher: release.yml on ossature/ossature

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page