Windows-GPU-UNLOCK
RTX3090 UEFI 포트, 한국어 무리셋 윈도우 부팅 가이드, 검증된 소스와 벤치마크 제공
Steltic은 오픈소스 AI 구조 설계 도우미로, 열간강·냉간성형강·비선형 검증을 지원하며 Git에서 무료 제공
Steltic is a family of open-source AI structural design assistants: hot-rolled steel to AISC 360/341, cold-formed steel to AISI S100/S240/S400, and nonlinear checks (pushover, NLRHA, DDM). Free on Git
기타Python · HTMLGitHub @Steltic온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Free, open-source AI agent that designs steel buildings to AISC 360, AISC 341 / 358 and ASCE 7-22 on your own machine: OpenSees model, calc report and 3D viewer. Bring your own LLM.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Free, open-source AI agent that designs steel buildings to AISC 360 and AISC 341 (with AISC 358 where appropriate) and ASCE 7-22 loads, on your own machine. Paste a design brief and get an OpenSees model, a calculation report written for senior review, and an interactive 3D viewer. Bring your own LLM API key (your API base URL and key are held in memory only, never written to disk).
browser ──▶ FastAPI app (localhost) ──▶ your LLM (key in app memory, never stored)
│ parses tool calls
▼
sandbox executor (run_python only) — Docker when available
│
steel engine + OpenSees ─▶ report.html + viewer_3d.html
Not for construction. Every output is produced by your own AI model, may be incomplete or incorrect, and must be independently checked and sealed by a licensed professional engineer before any use for design, construction, or permitting. See DISCLAIMER.md.
Most people should start with Steltic Hub, which clones and installs this module for you. To run this module on its own, install it from GitHub. It needs Python 3.10–3.12 (openseespy, the analysis engine, ships compiled binaries for those versions only); 3.12 is recommended.
Windows (PowerShell)
git clone https://github.com/Steltic/steltic
cd steltic
py -3.12 -m venv .venv
.venv\Scripts\Activate.ps1
pip install -e .
steltic # starts on http://127.0.0.1:8000 and opens your browser
macOS / Linux
git clone https://github.com/Steltic/steltic
cd steltic
python3.12 -m venv .venv
source .venv/bin/activate
pip install -e .
steltic # starts on http://127.0.0.1:8000 and opens your browser
The install brings the full engine (openseespy, numpy, scipy, matplotlib, about 400 MB), so designs run without
Docker. To run with a .env file of settings, use ./run_local.sh instead of steltic.
Update: in the repo folder, git pull, then pip install -e . again (needed only when pyproject.toml
changed, harmless otherwise).
First run: open Settings, enter your provider's API base URL (any OpenAI-compatible endpoint — OpenRouter, vLLM, Together, Fireworks, OpenAI, Anthropic…), your API key, and a model id. Then paste a brief (stories, bays & spacings, loads, seismic, system) — or pick one of the 36 built-in example briefs — and click Design building.
Offline smoke test: set Model to MOCK — it drives the whole pipeline (sandbox, engine, OpenSees,
report) with no LLM.
Windows note: if starting fails with "Application Control policy has blocked this file" or "os error 4551", Windows Smart App Control is blocking an unsigned Python. Use the signed python.org build and recreate the environment:
winget install Python.Python.3.12 # then open a new terminal in the repo folder
Remove-Item -Recurse -Force .venv
py -3.12 -m venv .venv
.venv\Scripts\Activate.ps1
pip install -e .
The agent's Python only ever executes in a sandbox. EXECUTOR (env / .env) picks the mode:
| value | isolation | notes |
|---|---|---|
auto | Docker if available, else subprocess | default |
docker | container per run: no network, read-only fs, non-root, cpu/mem caps | build once: ./sandbox_image/build.sh |
subprocess | none (child process with rlimits) | needs pip install openseespy numpy scipy matplotlib; fine for local single-user use |
Steltic binds to 127.0.0.1 and has no authentication — don't expose the port. Designs are saved
under your OS user-data dir (e.g. %LOCALAPPDATA%\Steltic, ~/.local/share/Steltic); override
with DATA_DIR.
Steltic was validated with RAG vector databases of AISC 360, 341 and 358 (2022), the AISC Steel Construction Manual Design Examples (V16.0, 168 worked examples), an examples database of validated OpenSees models, and two databases of the OpenSees documentation. The specifications and design examples ground the LLM in the current procedures; the OpenSees databases help it build the model — and when OpenSees throws errors, resolve them. Steltic's performance has been validated with these databases and will likely reduce without them.
For copyright reasons the vector databases of AISC 360, 341 and 358 are not open-sourced in
this project. The rest are freely downloadable from this repo's
v0.1.1 release as portable .jsonl.gz dumps
(pre-embedded; see rag_v2/README.md for loading them into your own Qdrant):
steel_design_examples (168 original worked Q&A covering the AISC Design Examples scope),
opensees_buildings_3d (40 validated 3D building models), opensees_building_templates, and the
two OpenSees documentation sets.
Two options:
RAG_API_URL empty — the agent relies on its own
cited AISC knowledge. Good models do respectably; grounded runs are better.rag_v2/ chunking + ingestion
starter kit. Then put the connection in the environment (or a .env next to where you launch):
RAG_API_URL=http://your-server:8080/query and, if your server enforces one, RAG_API_TOKEN=....The Nonlinear module can hand a re-design back through Continue once its Chapter 16 / pushover / DDM run is
complete (see steltic_nonlinear/docs/README_feedback.md). Three things in this repository exist for that:
cfg['drift_relief_16_1_2'] — the ASCE 7-22 §16.1.2 relief block SNL writes when a Chapter 16 analysis lets the
§12.12.1 drift limits be relaxed (Risk Category I–III only). steel_engine/preflight.py and consistency.py accept
a relaxed drift_limit only with a complete block, never for Risk Category IV, and never above the Chapter 16
limit; Chapter 8 of the report states the relief and that the design is provisional until Chapter 16 is re-run.POST /api/restore/<building>?archive=1 — moves an existing job aside as <building>__<timestamp> before the
restore (what a fresh run already does), so a promoted candidate never silently overwrites a design of record;
viewer_3d.html is now part of the restore whitelist.design/design_of_record.json — written by SNL when the user promotes a verified candidate; the report's Chapter 1
basis table shows it. The agent contract (contract/AGENT_START.md, Feedback from the Nonlinear module) says how
the three loop briefs must be applied (capacity_design.SCWB.by_story, capacity_design.panel_zone.by_joint).tests/test_drift_relief.py covers the rules (python -m pytest tests -q).
For a steel building the user designed, HR Steel builds the analysis package for the Nonlinear module without
designing anything (steltic/build_only/). Nothing is resized and nothing is invented:
GET /api/build_only/template, one tab per group: project and basis,
grid, levels, columns, beams, braces, loads, details, wind, your own results) or an ETABS .e2k text model becomes
one building_description.json. What the .e2k states is taken as data (stories, grids, frame objects per story,
sections, local-axis angles, releases, base restraints, diaphragms, design preferences); what has to be interpreted
(the dead and live load per level from area loads + slab + framing self-weight, the system per direction when the
design preferences name one frame type for a building that also has braces) is a proposal with its breakdown.missing_items.json) -- key items have no default: HR stops and asks (a section that is
not an AISC shape is one question per section name, the AISC metric designations W360X64 / HSS254X254X9.5 resolve
by themselves); default items show the proposed value and its reason and are used only once accepted;
refused items are outside version 1 (plate shear walls, STMF, partially restrained connections, sloped or
plan-diagonal beams, members off the levels, several diaphragm types, per-member grades, springs) and are never
simplified.translate.py writes cfg.py with the user's members as literal tables and a custom_build
that replays them one for one (add_column / add_beam / Truss, the diaphragms, attach_diaphragm_mass).
What it derives (grid lines through off-grid columns, column and beam splits where members frame in, the floor
plate, Table 12.12-1 drift limit, Cu, Ct/x, Kd, GCpi) is listed in provenance.json with its rule, beside the
source of every other value (file / answer / accepted default).model_opensees.py, model_static.py, report.html, design/*).
calc_package.json marks every member not checked (the engine has no coded capacities; a user design is not
checked by Steltic HR) and carries the user's RBS cuts, Lb and doublers for the Nonlinear module.The agent never redesigns such a job: it gets contract.BUILD_ONLY_RULES, its write_file refuses the generated
files, and the completion gate is the build-only gate (runner.gate: cfg.py is the generated one, the model is
built as declared, nothing is open). HTTP: POST /api/build_only/intake | answers | build,
GET /api/build_only/status/<building>. In the hub the User-designed building module drives the whole flow.
steltic/build_only/extract.py re-enters an HR job as a description (the acceptance test: 11 of the 18 HR test
buildings re-enter with identical periods, base shear and seismic weight -- and identical pushover / NLRHA models
in the Nonlinear module; the other 7 are refused for version-1 reasons: plate shear walls, STMF, R = 3 not
specifically detailed, plan-diagonal chamfer beams, inclined transfer columns, crane brackets off the levels).
tests/test_build_only.py.
A provider behind OpenRouter validates the whole conversation on every request. If a turn is cut off
in the middle of a tool call's arguments ({ and nothing more), a provider such as Together refuses
the next request with 400 Invalid JSON in tool call arguments — a 400 the retry net does not
retry, so the run ended, and the cut-off turn saved in conversation.json broke every Continue
after it. The agent now keeps every tool call in the history parseable ({} stands in for
arguments that did not parse), never runs such a call, answers it with an error that asks the model
to repeat it with complete arguments, and heals a conversation saved by an older version when it is
resumed. tests/test_tool_call_healing.py.
steltic/ FastAPI app + agent loop + sandbox executors · steel_engine/ OpenSees modelling,
design pipeline, consistency checks, report + 3D viewer · contract/ the agent's working contract
and references · frontend/ vanilla JS UI · sandbox_image/ Docker sandbox image ·
test_buildings/ 50+ example briefs (steel + CFS) with assessment rubrics · rag_v2/, rag_update/
build-your-own-RAG starter kit.
MIT — see LICENSE, NOTICE (third-party data notes) and
DISCLAIMER.md (engineering disclaimer; also shown in-app at /terms).