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.0.tar.gz (135.0 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.0-py3-none-any.whl (184.5 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for ossature-0.2.0.tar.gz
Algorithm Hash digest
SHA256 b14aab1e369cfc24b6856b7dd39afc10bd62dbd356f96e0f7f216badacc1357c
MD5 c7014ffa74594355f894c6dea62077e7
BLAKE2b-256 2767e90c4caa02bedc1fd169203686dfa6607af6b90b9c37d1e36def7c2b338d

See more details on using hashes here.

Provenance

The following attestation bundles were made for ossature-0.2.0.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.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for ossature-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bf6591fbf0a6f4a70823c1df92eb29cda2cb4f6739c9cea948337fa637381719
MD5 000ccf6f418cb8afeb3979c276846a32
BLAKE2b-256 362a95a8f4d581b389b102a2caf31aad839e24cf9feec8851756fe203c82b1a5

See more details on using hashes here.

Provenance

The following attestation bundles were made for ossature-0.2.0-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