steltic 0.1.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. steltic-0.1.1/.env.example +20 -0
  2. steltic-0.1.1/.gitignore +29 -0
  3. steltic-0.1.1/DISCLAIMER.md +60 -0
  4. steltic-0.1.1/LICENSE +21 -0
  5. steltic-0.1.1/NOTICE +20 -0
  6. steltic-0.1.1/PKG-INFO +130 -0
  7. steltic-0.1.1/README.md +102 -0
  8. steltic-0.1.1/contract/AGENT_START.md +478 -0
  9. steltic-0.1.1/contract/AISC360_TOC.md +51 -0
  10. steltic-0.1.1/contract/DESIGN_EG_INDEX.md +36 -0
  11. steltic-0.1.1/contract/III1_REFERENCE.md +54 -0
  12. steltic-0.1.1/contract/README_AGENT.md +417 -0
  13. steltic-0.1.1/frontend/Steltic-mark-loop.gif +0 -0
  14. steltic-0.1.1/frontend/app.js +506 -0
  15. steltic-0.1.1/frontend/index.html +149 -0
  16. steltic-0.1.1/frontend/styles.css +270 -0
  17. steltic-0.1.1/pyproject.toml +51 -0
  18. steltic-0.1.1/rag_get_shim.py +46 -0
  19. steltic-0.1.1/rag_update/new_buildings2.jsonl +4 -0
  20. steltic-0.1.1/rag_update/new_buildings3.jsonl +1 -0
  21. steltic-0.1.1/rag_v2/README.md +51 -0
  22. steltic-0.1.1/rag_v2/chunk_examples.py +226 -0
  23. steltic-0.1.1/rag_v2/chunk_v2.py +223 -0
  24. steltic-0.1.1/rag_v2/dump_opensees.py +67 -0
  25. steltic-0.1.1/rag_v2/load_opensees.py +60 -0
  26. steltic-0.1.1/rag_v2/reingest_examples.py +81 -0
  27. steltic-0.1.1/rag_v2/reingest_v2.py +79 -0
  28. steltic-0.1.1/run_local.sh +6 -0
  29. steltic-0.1.1/sandbox_image/Dockerfile +25 -0
  30. steltic-0.1.1/sandbox_image/build.sh +8 -0
  31. steltic-0.1.1/sandbox_image/runner.py +26 -0
  32. steltic-0.1.1/steel_engine/COMPOSITE_I3.md +35 -0
  33. steltic-0.1.1/steel_engine/aisc_shapes.csv +2300 -0
  34. steltic-0.1.1/steel_engine/consistency.py +580 -0
  35. steltic-0.1.1/steel_engine/design_pipeline.py +359 -0
  36. steltic-0.1.1/steel_engine/design_post.py +92 -0
  37. steltic-0.1.1/steel_engine/engine3d.py +1081 -0
  38. steltic-0.1.1/steel_engine/example_build.py +137 -0
  39. steltic-0.1.1/steel_engine/frame_diagram.py +184 -0
  40. steltic-0.1.1/steel_engine/pipeline.py +165 -0
  41. steltic-0.1.1/steel_engine/plot_model.py +210 -0
  42. steltic-0.1.1/steel_engine/preflight.py +130 -0
  43. steltic-0.1.1/steel_engine/report.py +2229 -0
  44. steltic-0.1.1/steel_engine/sections.py +124 -0
  45. steltic-0.1.1/steel_engine/static_model.py +504 -0
  46. steltic-0.1.1/steel_engine/vendor/THREE_LICENSE +21 -0
  47. steltic-0.1.1/steel_engine/vendor/three.min.js +6 -0
  48. steltic-0.1.1/steel_engine/viewer3d.py +337 -0
  49. steltic-0.1.1/steel_engine/viewer3d_template.html +506 -0
  50. steltic-0.1.1/steel_engine/viz3d.py +170 -0
  51. steltic-0.1.1/steltic/__init__.py +7 -0
  52. steltic-0.1.1/steltic/agent.py +901 -0
  53. steltic-0.1.1/steltic/bundle.py +136 -0
  54. steltic-0.1.1/steltic/cli.py +47 -0
  55. steltic-0.1.1/steltic/config.py +63 -0
  56. steltic-0.1.1/steltic/contract.py +86 -0
  57. steltic-0.1.1/steltic/job_tools.py +280 -0
  58. steltic-0.1.1/steltic/main.py +413 -0
  59. steltic-0.1.1/steltic/sandbox/__init__.py +4 -0
  60. steltic-0.1.1/steltic/sandbox/base.py +52 -0
  61. steltic-0.1.1/steltic/sandbox/docker_exec.py +60 -0
  62. steltic-0.1.1/steltic/sandbox/factory.py +30 -0
  63. steltic-0.1.1/steltic/sandbox/subprocess_exec.py +58 -0
  64. steltic-0.1.1/steltic/session.py +27 -0
  65. steltic-0.1.1/test_buildings/DIFFICULT_FEATURES_KEY.md +125 -0
  66. steltic-0.1.1/test_buildings/Ex10_Dual_SMF_SCBF_16levels_podium.txt +65 -0
  67. steltic-0.1.1/test_buildings/Ex11_BRBF_10levels_Uplan.txt +71 -0
  68. steltic-0.1.1/test_buildings/Ex12_SMF_14levels_chamfer_setback.txt +63 -0
  69. steltic-0.1.1/test_buildings/Ex13_OCBF_4levels_splitlevel.txt +58 -0
  70. steltic-0.1.1/test_buildings/Ex14_EBF_11levels_cruciform_hillside.txt +64 -0
  71. steltic-0.1.1/test_buildings/Ex15_Dual_SMF_BRBF_20levels_weddingcake.txt +64 -0
  72. steltic-0.1.1/test_buildings/Ex16_IMF_3levels_Zplan_school.txt +62 -0
  73. steltic-0.1.1/test_buildings/Ex17_SCBF_9levels_offset_core.txt +63 -0
  74. steltic-0.1.1/test_buildings/Ex18_R3_NotDetailed_8levels_lowseismic.txt +49 -0
  75. steltic-0.1.1/test_buildings/Ex19_SMF_11levels_softstory_podium.txt +43 -0
  76. steltic-0.1.1/test_buildings/Ex1_SCBF_5levels.txt +77 -0
  77. steltic-0.1.1/test_buildings/Ex20_SCBF_12levels_transfer_discontinuous.txt +47 -0
  78. steltic-0.1.1/test_buildings/Ex21_OCBF_1story_bigbox_flexiblediaphragm.txt +45 -0
  79. steltic-0.1.1/test_buildings/Ex22_SMF_6levels_hospital_RiskCatIV.txt +47 -0
  80. steltic-0.1.1/test_buildings/Ex23_Dual_SMF_BRBF_9levels_SDCF_nearfault_EOC.txt +47 -0
  81. steltic-0.1.1/test_buildings/Ex24_Mixed_SMF_NS_SCBF_EW_10levels_bidirectional.txt +49 -0
  82. steltic-0.1.1/test_buildings/Ex25_SMF_12levels_atrium_diaphragmdiscontinuity.txt +44 -0
  83. steltic-0.1.1/test_buildings/Ex26_Dual_SMF_SCBF_18levels_slender_windgoverned.txt +47 -0
  84. steltic-0.1.1/test_buildings/Ex27_CCPSW_CF_20levels_SpeedCore_composite.txt +44 -0
  85. steltic-0.1.1/test_buildings/Ex28_STMF_8levels_longspan_trussmoment.txt +43 -0
  86. steltic-0.1.1/test_buildings/Ex29_Dual_SMF_BRBF_20levels_264ft_NLRHA_PBSD.txt +43 -0
  87. steltic-0.1.1/test_buildings/Ex2_SMF_9levels.txt +75 -0
  88. steltic-0.1.1/test_buildings/Ex30_Composite_SCBF_6levels_studs_camber.txt +47 -0
  89. steltic-0.1.1/test_buildings/Ex31_Gable_warehouse_R3_unbalanced_snow_ponding.txt +40 -0
  90. steltic-0.1.1/test_buildings/Ex32_Vertical_addition_2over3_1968_A36_ASCE41.txt +46 -0
  91. steltic-0.1.1/test_buildings/Ex33_Crane_bay_IMF_runway_fatigue_App3.txt +46 -0
  92. steltic-0.1.1/test_buildings/Ex34_Twin_towers_BRBF_12and8_podium_seismic_joint.txt +44 -0
  93. steltic-0.1.1/test_buildings/Ex35_Ch15_equipment_platform_3tier_OCBF.txt +36 -0
  94. steltic-0.1.1/test_buildings/Ex3_BracedMoment_7levels.txt +83 -0
  95. steltic-0.1.1/test_buildings/Ex4_BRBF_3levels.txt +57 -0
  96. steltic-0.1.1/test_buildings/Ex5_SMF_10levels.txt +80 -0
  97. steltic-0.1.1/test_buildings/Ex6_SCBF_6levels.txt +68 -0
  98. steltic-0.1.1/test_buildings/Ex7a_SMF_7levels.txt +68 -0
  99. steltic-0.1.1/test_buildings/Ex7a_redesign.txt +23 -0
  100. steltic-0.1.1/test_buildings/Ex7b_SCBF_7levels.txt +59 -0
  101. steltic-0.1.1/test_buildings/Ex8_EBF_8levels_Lplan.txt +76 -0
  102. steltic-0.1.1/test_buildings/Ex9_SPSW_12levels_Tplan.txt +70 -0
@@ -0,0 +1,20 @@
1
+ # Copy to .env and edit (all optional). The `steltic` command and run_local.sh load it automatically.
2
+
3
+ # --- data location (default: your OS user-data dir, e.g. %LOCALAPPDATA%\Steltic or ~/.local/share/Steltic) ---
4
+ # DATA_DIR=
5
+
6
+ # --- sandbox executor ---
7
+ EXECUTOR=auto # auto | docker | subprocess (auto = Docker if available, else subprocess)
8
+ SANDBOX_IMAGE=steel-sandbox:latest
9
+ SANDBOX_TIMEOUT=900 # seconds per run_python
10
+ SANDBOX_MEM=2g
11
+ SANDBOX_CPUS=2
12
+ SANDBOX_PIDS=256
13
+
14
+ # --- engineering-standards RAG (optional) ---
15
+ # Empty => the agent's search tool returns a 'use your own knowledge' note and it relies on its own
16
+ # cited AISC knowledge. To enable RAG, either point these at YOUR OWN server (see rag_v2/README.md
17
+ # for the expected API), or request access to the hosted Steltic RAG via the contact details at
18
+ # https://stelticai.com.
19
+ RAG_API_URL=
20
+ RAG_API_TOKEN=
@@ -0,0 +1,29 @@
1
+ # secrets & local config
2
+ .env
3
+
4
+ # runtime data (designs live in the OS user-data dir by default; this covers DATA_DIR=./data setups)
5
+ data/
6
+ jobs/
7
+
8
+ # python
9
+ __pycache__/
10
+ *.pyc
11
+ *.pyo
12
+ .venv/
13
+ venv/
14
+
15
+ # packaging
16
+ dist/
17
+ build/
18
+ *.egg-info/
19
+
20
+ # editors / OS
21
+ .DS_Store
22
+
23
+ # working files
24
+ *.zip
25
+ *.bak
26
+ *.bak2
27
+ *.bak3
28
+ *.patch
29
+ SCOPING.md
@@ -0,0 +1,60 @@
1
+ # Steltic — Disclaimer & Limitation of Liability
2
+
3
+ By downloading, installing, or using **Steltic** (the "Software"), you ("User") agree to all terms
4
+ below. If you do not agree, do not use the Software.
5
+
6
+ ## 1. What Steltic is
7
+
8
+ Steltic is free, open-source software: an orchestration harness around an AI / large-language-model
9
+ system **that you select and supply** via your own API key. Steltic guides that model through a
10
+ structural-design workflow but **generates no engineering content of its own** — every model,
11
+ calculation, figure, and report (the "Outputs") is produced by your chosen AI. The Software runs
12
+ locally on your machine: your designs stay there, and your prompts go only to the LLM provider you
13
+ configure (and, if you enable one, the RAG server you configure).
14
+
15
+ ## 2. No professional engineering services
16
+
17
+ The Outputs are **preliminary, informational, and for conceptual/educational purposes only.** Use of
18
+ the Software is **not** the practice of engineering and creates **no** engineer-client or
19
+ professional relationship. No licensed professional has reviewed or sealed the Outputs.
20
+
21
+ ## 3. No warranty — "AS IS"
22
+
23
+ The Software and all Outputs are provided **"AS IS", with all faults, and WITHOUT WARRANTY OF ANY
24
+ KIND**, express, implied, or statutory, including merchantability, fitness for a particular purpose,
25
+ accuracy, completeness, and non-infringement (see also the MIT [LICENSE](LICENSE)). Because Steltic
26
+ generates no Outputs of its own and does not control the AI model you supply, its authors make no
27
+ representation or guarantee as to the quality, accuracy, or reliability of any Output.
28
+
29
+ ## 4. AI limitations
30
+
31
+ The Outputs are generated by probabilistic AI systems that can produce errors, omissions, and
32
+ fabricated values that appear authoritative but are wrong, and depend on the third-party model you
33
+ select and supply.
34
+
35
+ ## 5. Independent verification required — NOT FOR CONSTRUCTION
36
+
37
+ The Outputs **must not** be used for design, construction, fabrication, or permitting, nor relied
38
+ upon for any decision affecting health, safety, or property, **unless and until** independently
39
+ checked and, where applicable, **sealed/stamped by a professional engineer licensed in the relevant
40
+ jurisdiction** who assumes responsibility. You are solely responsible for verifying every input,
41
+ assumption, load, capacity, citation, and result.
42
+
43
+ ## 6. Assumption of risk
44
+
45
+ You assume **all risk** from using the Software and the Outputs. Any reliance is strictly at your
46
+ own risk.
47
+
48
+ ## 7. Limitation of liability
49
+
50
+ To the maximum extent permitted by law, the authors, copyright holders, and contributors are **not
51
+ liable** for any claim, damages, or other liability — including any indirect, incidental, special,
52
+ consequential, or punitive damages, or any property damage, personal injury, or death — arising from
53
+ or in connection with the Software or the Outputs, under any theory of liability, even if advised of
54
+ the possibility.
55
+
56
+ ## 8. General
57
+
58
+ If any provision is unenforceable it is severed and the rest remains in force.
59
+
60
+ *© 2026 Steltic (stelticai.com).*
steltic-0.1.1/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Steltic (stelticai.com)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
steltic-0.1.1/NOTICE ADDED
@@ -0,0 +1,20 @@
1
+ THIRD-PARTY DATA & NOTICES
2
+ ==========================
3
+
4
+ 1. AISC-derived data.
5
+ - steel_engine/aisc_shapes.csv (AISC shape properties) and the AISC 360-22 / 341-22 / 358
6
+ references in contract/ (AGENT_START.md, README_AGENT.md, AISC360_TOC.md) are derived from
7
+ AISC publications. AISC specifications and shape data remain the property of the American
8
+ Institute of Steel Construction. This repository does not reproduce AISC specification text.
9
+
10
+ 2. Three.js.
11
+ - steel_engine/vendor/three.min.js is Three.js, MIT-licensed (see steel_engine/vendor/THREE_LICENSE).
12
+
13
+ 3. Secrets.
14
+ - Never commit API keys. All keys (LLM provider, RAG token) are read from the environment or
15
+ entered at runtime and are excluded by .gitignore (.env). They are NOT written to disk by the app.
16
+ - If any token was ever pasted into a terminal, file, or chat, treat it as compromised and ROTATE it.
17
+
18
+ 4. Engineering liability.
19
+ - Outputs are preliminary and must be independently reviewed and, where applicable, sealed/stamped
20
+ by a professional engineer licensed in the relevant jurisdiction. See DISCLAIMER.md.
steltic-0.1.1/PKG-INFO ADDED
@@ -0,0 +1,130 @@
1
+ Metadata-Version: 2.4
2
+ Name: steltic
3
+ Version: 0.1.1
4
+ Summary: Free, local AISC 360/341 steel-design agent: your LLM + OpenSees + stamped-style reports
5
+ Project-URL: Homepage, https://stelticai.com
6
+ Author: Steltic
7
+ License-Expression: MIT
8
+ License-File: DISCLAIMER.md
9
+ License-File: LICENSE
10
+ License-File: NOTICE
11
+ Keywords: AISC,agent,llm,opensees,steel-design,structural-engineering
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Science/Research
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Topic :: Scientific/Engineering
16
+ Requires-Python: >=3.10
17
+ Requires-Dist: fastapi>=0.110
18
+ Requires-Dist: httpx>=0.27
19
+ Requires-Dist: itsdangerous>=2.1
20
+ Requires-Dist: python-multipart>=0.0.9
21
+ Requires-Dist: uvicorn[standard]>=0.27
22
+ Provides-Extra: engine
23
+ Requires-Dist: matplotlib; extra == 'engine'
24
+ Requires-Dist: numpy; extra == 'engine'
25
+ Requires-Dist: openseespy; extra == 'engine'
26
+ Requires-Dist: scipy; extra == 'engine'
27
+ Description-Content-Type: text/markdown
28
+
29
+ # Steltic
30
+
31
+ A free, open-source AISC 360/341 steel-design agent that runs locally. Paste a design brief and
32
+ watch the agent build an OpenSees model + a stamped-style HTML report + an interactive 3D viewer —
33
+ **bringing your own LLM** (your API base-url + key, held in memory only, never written to disk).
34
+
35
+ ```
36
+ browser ──▶ FastAPI app (localhost) ──▶ your LLM (key in app memory, never stored)
37
+ │ parses tool calls
38
+
39
+ sandbox executor (run_python only) — Docker when available
40
+
41
+ steel engine + OpenSees ─▶ report.html + viewer_3d.html
42
+ ```
43
+
44
+ > **Not for construction.** Every output is produced by your own AI model, may be incomplete or
45
+ > incorrect, and must be independently checked and sealed by a licensed professional engineer before
46
+ > any use for design, construction, or permitting. See [DISCLAIMER.md](DISCLAIMER.md).
47
+
48
+ ## Install & run
49
+
50
+ With [uv](https://docs.astral.sh/uv/) (recommended — no Python setup needed):
51
+
52
+ ```bash
53
+ uv tool install steltic
54
+ steltic # starts on http://127.0.0.1:8000 and opens your browser
55
+ ```
56
+
57
+ Or with pipx: `pipx install steltic`. Or from a checkout:
58
+
59
+ ```bash
60
+ git clone <this repo> && cd steltic
61
+ python -m venv .venv && . .venv/bin/activate
62
+ pip install -e .
63
+ ./run_local.sh # http://localhost:8000
64
+ ```
65
+
66
+ First run: open **Settings**, enter your provider's **API base URL** (any OpenAI-compatible
67
+ endpoint — OpenRouter, vLLM, Together, Fireworks, OpenAI, Anthropic…), your **API key**, and a
68
+ **model** id. Then paste a brief (stories, bays & spacings, loads, seismic, system) — or pick one of
69
+ the 36 built-in example briefs — and click **Design building**.
70
+
71
+ Offline smoke test: set Model to `MOCK` — it drives the whole pipeline (sandbox, engine, OpenSees,
72
+ report) with no LLM.
73
+
74
+ ## Sandbox
75
+
76
+ The agent's Python only ever executes in a sandbox. `EXECUTOR` (env / `.env`) picks the mode:
77
+
78
+ | value | isolation | notes |
79
+ |--------------|-----------|-------|
80
+ | `auto` | Docker if available, else subprocess | default |
81
+ | `docker` | container per run: no network, read-only fs, non-root, cpu/mem caps | build once: `./sandbox_image/build.sh` |
82
+ | `subprocess` | none (child process with rlimits) | needs `pip install openseespy numpy scipy matplotlib`; fine for local single-user use |
83
+
84
+ Steltic binds to 127.0.0.1 and has **no authentication** — don't expose the port. Designs are saved
85
+ under your OS user-data dir (e.g. `%LOCALAPPDATA%\Steltic`, `~/.local/share/Steltic`); override
86
+ with `DATA_DIR`.
87
+
88
+ ## Engineering-standards, OpenSees & design-examples RAG (highly recommended)
89
+
90
+ The hosted version of Steltic at [stelticai.com](https://stelticai.com) grounds the agent with RAG
91
+ vector databases of AISC 360, 341 and 358 (2022), the AISC Steel Construction Manual Design
92
+ Examples (V16.0, 168 worked examples), an examples database of validated OpenSees models, and two
93
+ databases of the OpenSees documentation. The specifications and design examples ground the LLM in
94
+ the current procedures; the OpenSees databases help it build the model — and when OpenSees throws
95
+ errors, resolve them. Steltic's performance has been validated **with** these databases and will
96
+ likely reduce without them.
97
+
98
+ For copyright reasons the vector databases of AISC 360, 341 and 358 are **not** open-sourced in
99
+ this project. The rest are freely downloadable from this repo's
100
+ [Releases page](https://github.com/Steltic/steltic/releases) as portable `.jsonl.gz` dumps
101
+ (pre-embedded; see [rag_v2/README.md](rag_v2/README.md) for loading them into your own Qdrant):
102
+ `steel_design_examples` (168 original worked Q&A covering the AISC Design Examples scope),
103
+ `opensees_buildings_3d` (40 validated 3D building models), `opensees_building_templates`, and the
104
+ two OpenSees documentation sets.
105
+
106
+ Three options:
107
+
108
+ 1. **None (default — not recommended).** Leave `RAG_API_URL` empty — the agent relies on its own
109
+ cited AISC knowledge. Good models do respectably; grounded runs are better.
110
+ 2. **Bring your own server.** Run any server exposing the small API described in
111
+ [rag_v2/README.md](rag_v2/README.md): load the downloadable OpenSees databases, and build the
112
+ standards collections from your own licensed copies with the `rag_v2/` chunking + ingestion
113
+ starter kit. Then put the connection in the environment (or a `.env` next to where you launch):
114
+ `RAG_API_URL=http://your-server:8080/query` and, if your server enforces one, `RAG_API_TOKEN=...`.
115
+ 3. **Hosted Steltic RAG.** The maintained, pre-built full set (specs + design examples + OpenSees).
116
+ To get access, use the contact details at [stelticai.com](https://stelticai.com), then set the
117
+ provided `RAG_API_URL` + `RAG_API_TOKEN` in your environment.
118
+
119
+ ## Repo map
120
+
121
+ `steltic/` FastAPI app + agent loop + sandbox executors · `steel_engine/` OpenSees modelling,
122
+ design pipeline, consistency checks, report + 3D viewer · `contract/` the agent's working contract
123
+ and references · `frontend/` vanilla JS UI · `sandbox_image/` Docker sandbox image ·
124
+ `test_buildings/` 50+ example briefs (steel + CFS) with assessment rubrics · `rag_v2/`, `rag_update/`
125
+ build-your-own-RAG starter kit.
126
+
127
+ ## License
128
+
129
+ MIT — see [LICENSE](LICENSE), [NOTICE](NOTICE) (third-party data notes) and
130
+ [DISCLAIMER.md](DISCLAIMER.md) (engineering disclaimer; also shown in-app at `/terms`).
@@ -0,0 +1,102 @@
1
+ # Steltic
2
+
3
+ A free, open-source AISC 360/341 steel-design agent that runs locally. Paste a design brief and
4
+ watch the agent build an OpenSees model + a stamped-style HTML report + an interactive 3D viewer —
5
+ **bringing your own LLM** (your API base-url + key, held in memory only, never written to disk).
6
+
7
+ ```
8
+ browser ──▶ FastAPI app (localhost) ──▶ your LLM (key in app memory, never stored)
9
+ │ parses tool calls
10
+
11
+ sandbox executor (run_python only) — Docker when available
12
+
13
+ steel engine + OpenSees ─▶ report.html + viewer_3d.html
14
+ ```
15
+
16
+ > **Not for construction.** Every output is produced by your own AI model, may be incomplete or
17
+ > incorrect, and must be independently checked and sealed by a licensed professional engineer before
18
+ > any use for design, construction, or permitting. See [DISCLAIMER.md](DISCLAIMER.md).
19
+
20
+ ## Install & run
21
+
22
+ With [uv](https://docs.astral.sh/uv/) (recommended — no Python setup needed):
23
+
24
+ ```bash
25
+ uv tool install steltic
26
+ steltic # starts on http://127.0.0.1:8000 and opens your browser
27
+ ```
28
+
29
+ Or with pipx: `pipx install steltic`. Or from a checkout:
30
+
31
+ ```bash
32
+ git clone <this repo> && cd steltic
33
+ python -m venv .venv && . .venv/bin/activate
34
+ pip install -e .
35
+ ./run_local.sh # http://localhost:8000
36
+ ```
37
+
38
+ First run: open **Settings**, enter your provider's **API base URL** (any OpenAI-compatible
39
+ endpoint — OpenRouter, vLLM, Together, Fireworks, OpenAI, Anthropic…), your **API key**, and a
40
+ **model** id. Then paste a brief (stories, bays & spacings, loads, seismic, system) — or pick one of
41
+ the 36 built-in example briefs — and click **Design building**.
42
+
43
+ Offline smoke test: set Model to `MOCK` — it drives the whole pipeline (sandbox, engine, OpenSees,
44
+ report) with no LLM.
45
+
46
+ ## Sandbox
47
+
48
+ The agent's Python only ever executes in a sandbox. `EXECUTOR` (env / `.env`) picks the mode:
49
+
50
+ | value | isolation | notes |
51
+ |--------------|-----------|-------|
52
+ | `auto` | Docker if available, else subprocess | default |
53
+ | `docker` | container per run: no network, read-only fs, non-root, cpu/mem caps | build once: `./sandbox_image/build.sh` |
54
+ | `subprocess` | none (child process with rlimits) | needs `pip install openseespy numpy scipy matplotlib`; fine for local single-user use |
55
+
56
+ Steltic binds to 127.0.0.1 and has **no authentication** — don't expose the port. Designs are saved
57
+ under your OS user-data dir (e.g. `%LOCALAPPDATA%\Steltic`, `~/.local/share/Steltic`); override
58
+ with `DATA_DIR`.
59
+
60
+ ## Engineering-standards, OpenSees & design-examples RAG (highly recommended)
61
+
62
+ The hosted version of Steltic at [stelticai.com](https://stelticai.com) grounds the agent with RAG
63
+ vector databases of AISC 360, 341 and 358 (2022), the AISC Steel Construction Manual Design
64
+ Examples (V16.0, 168 worked examples), an examples database of validated OpenSees models, and two
65
+ databases of the OpenSees documentation. The specifications and design examples ground the LLM in
66
+ the current procedures; the OpenSees databases help it build the model — and when OpenSees throws
67
+ errors, resolve them. Steltic's performance has been validated **with** these databases and will
68
+ likely reduce without them.
69
+
70
+ For copyright reasons the vector databases of AISC 360, 341 and 358 are **not** open-sourced in
71
+ this project. The rest are freely downloadable from this repo's
72
+ [Releases page](https://github.com/Steltic/steltic/releases) as portable `.jsonl.gz` dumps
73
+ (pre-embedded; see [rag_v2/README.md](rag_v2/README.md) for loading them into your own Qdrant):
74
+ `steel_design_examples` (168 original worked Q&A covering the AISC Design Examples scope),
75
+ `opensees_buildings_3d` (40 validated 3D building models), `opensees_building_templates`, and the
76
+ two OpenSees documentation sets.
77
+
78
+ Three options:
79
+
80
+ 1. **None (default — not recommended).** Leave `RAG_API_URL` empty — the agent relies on its own
81
+ cited AISC knowledge. Good models do respectably; grounded runs are better.
82
+ 2. **Bring your own server.** Run any server exposing the small API described in
83
+ [rag_v2/README.md](rag_v2/README.md): load the downloadable OpenSees databases, and build the
84
+ standards collections from your own licensed copies with the `rag_v2/` chunking + ingestion
85
+ starter kit. Then put the connection in the environment (or a `.env` next to where you launch):
86
+ `RAG_API_URL=http://your-server:8080/query` and, if your server enforces one, `RAG_API_TOKEN=...`.
87
+ 3. **Hosted Steltic RAG.** The maintained, pre-built full set (specs + design examples + OpenSees).
88
+ To get access, use the contact details at [stelticai.com](https://stelticai.com), then set the
89
+ provided `RAG_API_URL` + `RAG_API_TOKEN` in your environment.
90
+
91
+ ## Repo map
92
+
93
+ `steltic/` FastAPI app + agent loop + sandbox executors · `steel_engine/` OpenSees modelling,
94
+ design pipeline, consistency checks, report + 3D viewer · `contract/` the agent's working contract
95
+ and references · `frontend/` vanilla JS UI · `sandbox_image/` Docker sandbox image ·
96
+ `test_buildings/` 50+ example briefs (steel + CFS) with assessment rubrics · `rag_v2/`, `rag_update/`
97
+ build-your-own-RAG starter kit.
98
+
99
+ ## License
100
+
101
+ MIT — see [LICENSE](LICENSE), [NOTICE](NOTICE) (third-party data notes) and
102
+ [DISCLAIMER.md](DISCLAIMER.md) (engineering disclaimer; also shown in-app at `/terms`).