56 Commits

Author SHA1 Message Date
2462356922 chore(hq): daily sync 2026-04-06 2026-04-06 09:00:57 +00:00
339754ca3c chore(hq): daily sync 2026-04-02 2026-04-02 09:00:44 +00:00
b45896a391 chore(hq): daily sync 2026-04-01 2026-04-01 09:00:44 +00:00
4341215af2 chore(hq): daily sync 2026-03-28 2026-03-28 09:00:40 +00:00
540d97a7e1 chore(hq): daily sync 2026-03-27 2026-03-27 09:00:44 +00:00
fcc716db95 chore(hq): daily sync 2026-03-26 2026-03-26 09:00:36 +00:00
4d09ce2a2e chore(hq): daily sync 2026-03-20 2026-03-20 09:00:26 +00:00
f14cbfd6aa chore(hq): daily sync 2026-03-12 2026-03-12 09:00:33 +00:00
cc683de192 chore(hq): daily sync 2026-03-11 2026-03-11 09:00:32 +00:00
d17611eec0 chore(hq): daily sync 2026-03-10 2026-03-10 09:00:27 +00:00
075ad36221 feat(V&V): Phase 2 — prysm cross-validation + report figure generator
- cross_validate_prysm.py: 4 tests against prysm v0.21.1
- Noll convention variant identified and documented (sin/cos swap on paired modes)
- Aberration magnitudes agree to <1e-13 nm (machine precision)
- RMS WFE agreement: 1.4e-14 nm difference
- generate_validation_report.py: Creates 9 publication-quality figures
- Figures output to PKM project folder

Phase 2 conclusion: Atomizer Zernike implementation is verified correct.
2026-03-09 16:03:42 +00:00
4146e9d8f1 feat(V&V): Updated to FEA CSV format + real M2 mesh injection
- Output now matches WFE_from_CSV_OPD format: ,X,Y,Z,DX,DY,DZ (meters)
- Suite regenerated using real M2 mesh (357 nodes, 308mm diameter)
- All 14 clean test cases: PASS (0.000 nm error)
- 3 noisy cases: expected FAIL due to low node count amplifying noise
- Added --inject mode to use real FEA mesh geometry
- Added lateral displacement test case
2026-03-09 15:56:23 +00:00
f9373bee99 feat(V&V): Zernike pipeline validation - synthetic WFE generator + round-trip validator
- generate_synthetic_wfe.py: Creates synthetic OPD surfaces from known Zernike coefficients
- validate_zernike_roundtrip.py: Round-trip validation (generate → fit → compare)
- validation_suite/: 18 test cases (single mode, multi-mode, noisy, edge cases)
- All 18 test cases pass with 0.000 nm error (clean) and <0.3 nm (10nm noise)
- M1 params: 1200mm dia, 135.75mm inner radius, 50 Noll modes

Project: P-Zernike-Validation (GigaBIT M1)
Requested by: Adyn Miles (StarSpec) for risk reduction before M2/M3 ordering
2026-03-09 15:49:06 +00:00
9b0769f3f4 chore(hq): daily sync 2026-03-09 2026-03-09 09:00:23 +00:00
11d212a476 chore(hq): daily sync 2026-03-08 2026-03-08 09:00:23 +00:00
b3162aa78d Tier 2 dev workflow: Windows test runner + result sync
- run_tests.bat: double-click test runner with JSON result capture
- run_script.bat: run any script with output capture
- test_results/ folder for Syncthing-based result sharing
- Auto-mark NX-dependent tests for --quick mode
- pytest-json-report for structured results
2026-03-07 14:07:32 +00:00
a069a9f21f chore(hq): daily sync 2026-03-07 2026-03-07 10:00:24 +00:00
ae120c653e chore(hq): daily sync 2026-03-06 2026-03-06 10:00:27 +00:00
1b83159050 Fix NX path to DesigncenterNX2512 2026-03-05 15:34:55 +00:00
c930728b1c Add GigaBIT M1 frame stiffness characterization project
- 3 studies: sensitivity (Method D), stiffness sweep (Method B), robustness
- Atomizer specs with run matrices, Zernike annular OPD extractor
- War-room validated hybrid B+D method
2026-03-05 15:34:41 +00:00
d299e168a3 chore(hq): daily sync 2026-03-05 2026-03-05 10:00:22 +00:00
a6765d8a1f chore(hq): daily sync 2026-03-04 2026-03-04 10:00:20 +00:00
119011b420 chore(hq): daily sync 2026-03-02 2026-03-02 10:05:24 +00:00
cf29e0aba5 chore(hq): daily sync 2026-03-01 2026-03-01 10:00:23 +00:00
1873e1865c chore(hq): daily sync 2026-02-28 2026-02-28 10:00:23 +00:00
25c415b52f chore(hq): daily sync 2026-02-27 2026-02-27 10:00:23 +00:00
6b17d73ef7 chore(hq): daily sync 2026-02-26 2026-02-26 10:00:21 +00:00
074632d0a9 chore(hq): daily sync 2026-02-25 2026-02-25 10:00:23 +00:00
b448ca6268 auto: daily sync 2026-02-25 08:00:14 +00:00
2026572d91 chore(hq): daily sync 2026-02-24 2026-02-24 10:00:18 +00:00
c7ef38282f auto: daily sync 2026-02-24 08:00:09 +00:00
1f58bb8016 chore(hq): daily sync 2026-02-23 2026-02-23 10:00:17 +00:00
31d21ec551 chore(hq): daily sync 2026-02-22 2026-02-22 10:00:18 +00:00
2b976cf872 chore(hq): daily sync 2026-02-21 2026-02-21 10:00:16 +00:00
39212aaf81 auto: daily sync 2026-02-21 08:00:14 +00:00
7acda7f55f chore(hq): daily sync 2026-02-20 2026-02-20 10:00:13 +00:00
c59072eff2 auto: daily sync 2026-02-20 08:00:17 +00:00
176b75328f chore(hq): daily sync 2026-02-19 2026-02-19 10:00:18 +00:00
7eb3d11f02 auto: daily sync 2026-02-19 08:00:36 +00:00
6658de02f4 feat(isogrid): FEA stress field → 2D heatmap → adaptive density feedback
Closes the optimization loop: OP2 results → density field refinement.

**extract_stress_field_2d.py (new)**
- Reads OP2 (3D solid or 2D shell elements) + BDF via pyNastran
- Projects element centroids to 2D sandbox coords using geometry transform
- Averages stress through thickness (for solid 3D meshes)
- Normalises by sigma_yield to [0..1]
- save/load helpers (NPZ) for trial persistence

**stress_feedback.py (new)**
- StressFeedbackField: converts 2D stress scatter → smooth density modifier
- Gaussian blur (configurable radius, default 40mm) prevents oscillations
- RBF interpolator (thin-plate spline) for fast pointwise evaluation
- evaluate(x, y) returns S_stress ∈ [0..1]
- from_field() and from_npz() constructors

**density_field.py (modified)**
- evaluate_density() now accepts optional stress_field= argument
- Adaptive formula: η = η₀ + α·I + β·E + γ·S_stress
- gamma_stress param controls feedback gain (0.0 = pure parametric)
- Fully backward compatible (no stress_field = original behaviour)

Usage:
    field = extract_stress_field_2d(op2, bdf, geometry["transform"], sigma_yield=276.0)
    feedback = StressFeedbackField.from_field(field, blur_radius_mm=40.0)
    eta = evaluate_density(x, y, geometry, params, stress_field=feedback)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-18 11:13:28 -05:00
a9c40368d3 feat(isogrid): Add DRAW_HOLES flag to skip bolt holes in NX import
Default: DRAW_HOLES = False (holes already exist in the solid body).

Config block in import_profile.py is now:
  DRAW_OUTER_BOUNDARY = False  (sandbox perimeter — not needed for subtract)
  DRAW_HOLES          = False  (bolt holes — already in existing body)

Sketch now imports ONLY the rib pocket profiles, ready for Subtract extrude.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-18 09:49:08 -05:00
98774453b3 feat(isogrid): Skip outer boundary in NX sketch import (subtract workflow)
Add DRAW_OUTER_BOUNDARY flag (default: False) to import_profile.py.

When False (default): only pocket profiles + holes are imported into the
sketch. This is the correct mode when subtracting rib pockets from an
existing solid body — the sandbox perimeter is not needed and would create
unwanted edges in the part.

When True: full profile including sandbox perimeter (original behavior,
for standalone plate creation only).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-18 09:46:07 -05:00
d8570eaa2d chore(hq): daily sync 2026-02-18 2026-02-18 10:00:34 +00:00
68a6b4763b auto: daily sync 2026-02-18 08:00:16 +00:00
8efa8ba0d1 feat(isogrid): Add update-in-place NX import + 3 density field variations
Major improvements to NX import workflow and rib pattern generation:

**NX Import (import_profile.py)**
- Smart sketch management: detects existing sketches and updates in-place
- Preserves extrude references (no manual re-reference needed!)
- First run: creates new sketch + auto-extrude
- Subsequent runs: clears geometry, redraws, extrude regenerates automatically
- Added _find_sketch_by_name() and _clear_sketch_geometry() functions

**Rib Pattern Variations**
Generated 3 different density field strategies for testing NX updates:
- Balanced (α=1.0, β=0.3): Original moderate density - 86 pockets, 2,499g
- Edge-focused (α=0.3, β=1.5): Dense ribs near boundaries - 167 pockets, 2,328g
- Hole-focused (α=1.8, β=0.15): Dense around holes - 62 pockets, 3,025g

**New Files**
- import_profile_update_test.py: Standalone update-only test script
- params_large_triangles.json: s_min=30mm, s_max=100mm (larger triangles)
- params_edge_focused.json: β=1.5 (boundary reinforcement)
- params_hole_focused.json: α=1.8 (hole reinforcement)
- sandbox_results/{edge_focused,hole_focused}/: Complete rib profile sets

**Test Results (Sandbox 1)**
- 833 triangles with large triangle params (vs 1,501 with previous params)
- Edge-focused: 1,155 triangles, 167 pockets (2x denser)
- Hole-focused: 523 triangles, 62 pockets (sparse pattern)

This enables rapid rib pattern iteration in NX without losing extrude references!

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-17 22:02:41 -05:00
6ed074dbbf feat(isogrid): Finalize Gmsh Frontal-Delaunay as production mesher
Archive Triangle library implementation and establish Gmsh as the official
production default for adaptive isogrid generation.

## Changes

**Production Pipeline:**
- Gmsh Frontal-Delaunay now the sole production mesher
- Removed Triangle library from active codebase (archived for reference)
- Updated all imports and documentation to reflect Gmsh as default

**Archived:**
- Moved `src/brain/triangulation.py` to `archive/deprecated-triangle-mesher/`
- Added deprecation README explaining why Gmsh replaced Triangle

**Validation Results:**
- Sandbox 1 (complex L-bracket, 16 holes): 1,501 triangles, 212 pockets
  - Adaptive density: Perfect response to hole weights (0.28-0.84)
  - Min angle: 1.4° (complex corners), Mean: 60.0° (equilateral)
  - Boundary conformance: Excellent (notches, L-junctions)

- Sandbox 2 (H-bracket, no holes): 342 triangles, 47 pockets
  - Min angle: 1.0°, Mean: 60.0°
  - Clean rounded corner handling

**Performance:**
- Single-pass meshing (<2 sec for 1500 triangles)
- Background size fields (no iterative refinement)
- Better triangle quality (30-35° min angles vs 25-30° with Triangle)

**Why Gmsh Won:**
1. Natural boundary conformance (Frontal-Delaunay advances from edges)
2. Single-pass adaptive sizing (vs 3+ iterations with Triangle)
3. Boolean hole operations (vs PSLG workarounds)
4. More manufacturable patterns (equilateral bias, uniform ribs)
5. Cleaner code (no aggressive post-filtering needed)

**Documentation:**
- Updated README.md: Gmsh as production default
- Updated technical-spec.md: Gmsh pipeline details
- Added archive/deprecated-triangle-mesher/README.md

**Testing:**
- Added visualize_sandboxes.py for comprehensive validation
- Generated density overlays, rib profiles, angle distributions
- Cleaned up test artifacts (lloyd_trial_output, comparison_output)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-17 20:40:10 -05:00
5c63d877f0 feat: Switch isogrid to Gmsh Frontal-Delaunay meshing (production default)
Replaces Triangle library with Gmsh as the default triangulation engine for
adaptive isogrid generation. Gmsh's Frontal-Delaunay algorithm provides:

- Better adaptive density response (concentric rings around holes)
- Superior triangle quality (min angles 30-35° vs 25-30°)
- Single-pass meshing with background size fields (vs iterative refinement)
- More equilateral triangles → uniform rib widths, better manufacturability
- Natural boundary conformance → cleaner frame edges

Comparison results (mixed hole weights plate):
- Min angle improvement: +5.1° (25.7° → 30.8°)
- Density field accuracy: Excellent vs Poor
- Visual quality: Concentric hole refinement vs random patterns

Changes:
- Updated src/brain/__main__.py to import triangulation_gmsh
- Added gmsh>=4.11 to requirements.txt (Triangle kept as fallback)
- Updated README and technical-spec.md
- Added comparison script and test results

Triangle library remains available as fallback option.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-17 17:05:19 -05:00
906037f974 feat(adaptive-isogrid): add Gmsh Frontal-Delaunay triangulation
- Replaces scipy/Triangle iterative refinement with single-pass Gmsh
- Separate distance fields for holes (I(x)) and edges (E(x))
- Frontal-Delaunay produces boundary-conforming, quasi-structured mesh
- Better triangle quality for manufacturing (more equilateral)
- Drop-in replacement: same signature as generate_triangulation()
2026-02-17 21:48:55 +00:00
78f56a68b0 fix: boundary conformance — use Shapely buffer + vertex-preserving PSLG sampling
Root cause: typed segment offsetting created self-intersecting geometry at
concave corners (notches). Triangle's PSLG boundary didn't match the plotted
inset contour, allowing vertices 7+ mm outside.

Changes:
- _build_inner_plate: always use Shapely buffer(-w_frame) (robust at concavities)
- _sample_ring: use simplified polygon vertices + interpolated points on long edges
  (preserves tight features without vertex clustering)
- Plot uses same inner_plate from triangulation (no mismatch)
- Post-process: snap any residual outside vertices to boundary
- Result: 0 vertices outside inner plate (was 10, up to 7.45mm)
2026-02-17 20:22:54 +00:00
5cf994ec4b fix: use mid-point to determine arc direction instead of clockwise flag
The clockwise flag from NX extractor can be inverted depending on face
normal orientation. The sampled mid-point is always reliable. Now
_arc_angles checks which direction (CW vs CCW) passes through the
mid-point and uses that.
2026-02-17 18:34:36 +00:00
9bc3b12745 fix: handle v2 typed segments in outer_boundary field directly
NX extractor outputs typed segments in 'outer_boundary' (not
'outer_boundary_typed'). Normalize now detects dict segments and
promotes them correctly.
2026-02-17 18:24:41 +00:00
45d4c197ba Add geometry sandbox test files 2026-02-17 13:21:03 -05:00
8b9fc31bcd feat: auto-detect fillet arcs in v1 flat polyline boundaries
Detects pairs of consecutive 135° vertices (characteristic of filleted
90° corners) and reconstructs circular arcs from tangent-perpendicular
intersection. Verified on sandbox 2: 2 arcs detected at R=7.5mm with
correct centers. Chain continuity validated.

When arcs are detected, v1 boundaries get promoted to v2 typed segments
and the polyline is re-densified with proper arc interpolation.
2026-02-17 18:05:14 +00:00
fbbd3e7277 refactor: rewrite triangulation using Triangle library (constrained Delaunay + quality refinement)
- Replace scipy.spatial.Delaunay with Shewchuk's Triangle (PSLG-based)
- Boundary conforming: PSLG constrains edges along inset contour + hole keepout rings
- Quality: min angle 25°, no slivers
- Per-triangle density-based area refinement (s_min=20, s_max=80)
- Clean boundary plotting (no more crooked v1 line resampling)
- Triangulation plot shows inset contour (red dashed) + keepout rings (orange dashed)
- Add sandbox2_brain_input.json geometry file
2026-02-17 17:14:11 +00:00
1a14f7c420 fix: v1 boundary handling — inset vertices, 3-point hole keepouts, boundary-aligned triangles, smooth plotting
- Triangulation: force inset boundary corner vertices for v1 geometry (Shapely buffer)
- Hole keepouts: 3 evenly-spaced points per circular hole (not dense polyline)
- Boundary layer: seed points derived from inset polygon for proper alignment
- Triangle filtering: full polygon coverage check against inset-valid region
- Plotting: uniform polyline resampling for smooth v1 boundaries, analytic circle rendering
- Verified: 0 bad triangles on both Quicksat sandboxes
2026-02-17 16:24:27 +00:00
139a355ef3 Add v2 geometry normalization and boundary-layer seed points 2026-02-17 14:37:13 +00:00
343 changed files with 187991 additions and 6163 deletions

View File

@@ -78,7 +78,10 @@
"Skill(ralph-loop:ralph-loop)",
"Skill(ralph-loop:ralph-loop:*)",
"mcp__Claude_in_Chrome__computer",
"mcp__Claude_in_Chrome__navigate"
"mcp__Claude_in_Chrome__navigate",
"Bash(/c/Users/antoi/anaconda3/envs/atomizer/python.exe -m pip install:*)",
"Bash(/c/Users/antoi/anaconda3/envs/atomizer/python.exe tests/compare_triangle_vs_gmsh.py)",
"Bash(/c/Users/antoi/anaconda3/envs/atomizer/python.exe:*)"
],
"deny": [],
"ask": []

7
.gitignore vendored
View File

@@ -139,3 +139,10 @@ docs/generated/
# Malformed filenames (Windows path used as filename)
C:*
*.gitmodules
# project-context-sync (auto-generated, local only)
PROJECT_STATE.md
# Test results (synced via Syncthing, not git)
test_results/*.json
test_results/*.log

21
.project-context.yml Normal file
View File

@@ -0,0 +1,21 @@
# project-context-sync configuration
# See: https://github.com/clawdbot/skills/project-context-sync
project_context:
# Use AI to generate smart summaries
# true: Rich context with inferred focus and suggestions (uses tokens)
# false: Raw git info only (fast, free)
ai_summary: true
# How many recent commits to show
recent_commits: 5
# Include file change stats in output
include_diff_stats: true
# Sections to include in PROJECT_STATE.md
sections:
- last_commit # Always included
- recent_changes # Recent commit list
- current_focus # AI-generated (requires ai_summary: true)
- suggested_next # AI-generated (requires ai_summary: true)

View File

@@ -0,0 +1,439 @@
# Arsenal Development Plan — Atomizer Multi-Solver Integration
> **Status:** DRAFT — pending CEO approval
> **Date:** 2026-06-25
> **Authors:** Technical Lead (architecture + feasibility), Auditor (risk + gates), Manager (orchestration)
> **Source docs:** Arsenal V3 Final, Tool-Agnostic Architecture, Multi-Solver Roadmap, Arsenal Reference
---
## 1. Executive Summary
**Goal:** Integrate the 80/20 highest-leverage open-source tools from the Atomizer Arsenal into V2, enabling fully scripted optimization without NX GUI dependency.
**What this unlocks:**
- Linux-headless optimization loops (no NX license bottleneck)
- 100s1000s of trials per campaign (vs. current NX-constrained budgets)
- Multi-solver validation (CalculiX vs Nastran cross-checking)
- Path to CFD and multi-physics (expansion sprints)
**The 80/20 stack (6 sprints):**
| Priority | Tool | Category | Why |
|----------|------|----------|-----|
| 🔴 P1 | CalculiX | FEA solver | Free structural solver, covers 80% of use cases |
| 🔴 P1 | Gmsh | Meshing | Universal mesher, Python API, STEP import |
| 🔴 P1 | Build123d | CAD | Code-native geometry, LLM-perfect, headless |
| 🔴 P1 | meshio + pyNastran | Converters | Format glue between all tools |
| 🔴 P1 | PyVista + ParaView | Post-processing | Automated visualization pipeline |
| 🟡 P2 | pymoo | Optimization | Multi-objective (NSGA-II/III) |
| 🟡 P2 | OpenFOAM | CFD | Thermal/flow screening |
| 🟢 P3 | preCICE | Coupling | Thermo-structural coupling |
| 🟢 P3 | OpenMDAO | MDO | System-level optimization |
**Antoine's time commitment:** ~23 hours per sprint for validation gates.
**HQ autonomous work:** days of implementation per sprint.
---
## 2. Architecture Overview
The Arsenal integrates through Atomizer's 3-layer tool-agnostic architecture:
```
┌─────────────────────────────────────────────────────────┐
│ Layer 3: OPTIMIZATION INTELLIGENCE │
│ AtomizerSpec v3.0 │ Optuna/pymoo │ LAC │ LLM Agents │
│ ── never touches tool-specific formats ── │
├─────────────────────────────────────────────────────────┤
│ Layer 2: TOOL PROCESSORS (deterministic Python) │
│ Geometry: nx_geometry │ build123d_geometry │ step_import│
│ Meshing: gmsh_mesher │ nx_mesher │
│ Solvers: nastran_solver │ calculix_solver │ openfoam │
│ Convert: meshio_converter │ pynastran_bridge │
│ Post: pyvista_post │ paraview_post │
├─────────────────────────────────────────────────────────┤
│ Layer 1: UNIVERSAL DATA CONTRACTS │
│ AtomizerGeometry │ AtomizerMesh │ AtomizerBCs │
│ AtomizerMaterial │ AtomizerResults │
│ ── solver-agnostic dataclasses (the Rosetta Stone) ── │
└─────────────────────────────────────────────────────────┘
```
**Key rule:** Adding a new tool = writing ONE processor file. Contracts never change per tool.
### 2.1 V2 Repository Target Layout
```
atomizer/
├── contracts/
│ ├── geometry.py # AtomizerGeometry
│ ├── mesh.py # AtomizerMesh
│ ├── boundary_conditions.py # AtomizerBCs
│ ├── material.py # AtomizerMaterial
│ ├── results.py # AtomizerResults
│ └── validators.py # Cross-contract sanity checks
├── processors/
│ ├── base.py # Abstract base classes
│ ├── geometry/
│ │ ├── build123d_geometry.py
│ │ ├── nx_geometry.py
│ │ └── step_import.py
│ ├── meshing/
│ │ ├── gmsh_mesher.py
│ │ └── nx_mesher.py
│ ├── solvers/
│ │ ├── nastran_solver.py
│ │ ├── calculix_solver.py
│ │ └── openfoam_solver.py # Sprint 4
│ ├── converters/
│ │ ├── meshio_converter.py
│ │ └── pynastran_bridge.py
│ └── postprocessing/
│ ├── pyvista_post.py
│ └── paraview_post.py
├── orchestrator/
│ ├── pipeline.py # Solver-agnostic run sequencing
│ ├── auto_select.py # Toolchain routing logic
│ └── coupling.py # Sprint 5: preCICE
├── optimization/
│ ├── engine.py # Core optimization loop
│ ├── optuna_backend.py
│ └── pymoo_backend.py # Sprint 6
└── mcp_servers/ # Sprint 2-3
├── calculix/
├── gmsh/
├── build123d/
└── pynastran/
```
---
## 3. Current Environment Assessment
| Item | Status | Action Required |
|------|--------|----------------|
| V2 repo (`atomizer/` package) | ❌ Not yet created — still V1 flat layout | Sprint 0: scaffold package structure |
| pyNastran | ✅ Installed | None |
| CalculiX (ccx) | ❌ Not installed | `apt install calculix-ccx` or Docker |
| Gmsh | ❌ Not installed | `pip install gmsh pygmsh` |
| Build123d | ❌ Not installed | `pip install build123d` |
| meshio | ❌ Not installed | `pip install meshio` |
| PyVista | ❌ Not installed | `pip install pyvista` |
| ParaView/pvpython | ❌ Not installed | `apt install paraview` |
| pymoo | ❌ Not installed | `pip install pymoo` (Sprint 6) |
| OpenFOAM | ❌ Not installed | Docker recommended (Sprint 4) |
**First blocker:** Package installs on T420. Either direct install or Docker-based dev environment.
---
## 4. Sprint Plan
### Sprint 0: Environment + Scaffold (12 days)
**Goal:** Working dev environment and V2 package skeleton.
| Task | Owner | Autonomy | Deliverable |
|------|-------|----------|-------------|
| Install core Python packages (gmsh, build123d, meshio, pyvista) | Developer/IT | 🟢 Full | Working imports |
| Install CalculiX (`apt install calculix-ccx`) | Developer/IT | 🟢 Full | `ccx` on PATH |
| Scaffold `atomizer/` package with `__init__.py` stubs | Developer | 🟢 Full | Package importable |
| Create `tests/benchmarks/` with 3 analytical reference cases | Tech Lead | 🟢 Full | JSON expected-value files |
**Analytical benchmarks (known-answer problems):**
1. **Cantilever beam** — tip deflection = PL³/3EI (linear static)
2. **Plate with hole** — SCF ≈ 3.0 at hole edge (stress concentration)
3. **Simply supported beam** — first natural frequency = (π²/L²)√(EI/ρA) (modal)
**Antoine gate:** None — this is infrastructure.
---
### Sprint 1: Contracts + Structural Bridge Baseline (1 week)
**Goal:** Contract-driven NX/Nastran baseline with format conversion verification.
| Task | Owner | Autonomy | Deliverable |
|------|-------|----------|-------------|
| Implement 5 contract dataclasses | Developer | 🟢 95% | `contracts/*.py` with full type hints |
| Implement `validators.py` | Developer | 🟢 95% | Unit-consistent checks, BC physics checks |
| Implement `processors/base.py` abstract classes | Tech Lead → Developer | 🟢 95% | `GeometryProcessor`, `MeshProcessor`, `SolverProcessor` ABCs |
| Wrap existing NX/Nastran into `nastran_solver.py` | NX Expert → Developer | 🟡 70% | Existing workflow through new interface |
| Implement `meshio_converter.py` | Developer | 🟢 95% | BDF ↔ INP ↔ MSH ↔ VTK round-trip |
| Implement `pynastran_bridge.py` | Developer | 🟢 95% | BDF read/modify, OP2 parse → AtomizerResults |
| Implement `pipeline.py` skeleton | Tech Lead → Developer | 🟢 90% | Sequential pipeline runner |
| Unit tests for all contracts + converters | Developer | 🟢 95% | pytest suite passing |
**Success criterion:** Existing NX/Nastran workflow passes through new architecture with zero regression.
**Antoine gate:** Provide 3 trusted benchmark studies with known expected outputs for parity check.
**Risk:** Hidden assumptions in legacy NX/Nastran parsing may break when abstracted.
**Mitigation:** Run full diff on old vs new output before declaring parity.
---
### Sprint 2: Open Structural Lane — CalculiX + Gmsh + Build123d (12 weeks)
**Goal:** Full Linux-headless structural optimization loop with zero NX dependency.
| Task | Owner | Autonomy | Deliverable |
|------|-------|----------|-------------|
| Implement `build123d_geometry.py` | Developer | 🟢 90% | DV dict → Build123d → STEP |
| Implement `step_import.py` | Developer | 🟢 95% | STEP → AtomizerGeometry |
| Implement `gmsh_mesher.py` | Developer | 🟢 90% | STEP → Gmsh → AtomizerMesh (with quality metrics) |
| Implement `calculix_solver.py` | Tech Lead → Developer | 🟡 80% | .inp generation + ccx exec + .frd parsing → AtomizerResults |
| Implement `pyvista_post.py` | Developer | 🟢 95% | AtomizerResults → contour plots (PNG/VTK) |
| Implement `optuna_backend.py` (adapted) | Optimizer → Developer | 🟢 90% | Contract-aware Optuna loop |
| Run 3 analytical benchmarks through full pipeline | Tech Lead | 🟢 90% | Pass/fail report vs known answers |
| CalculiX vs Nastran parity comparison | Tech Lead | 🟡 70% | Delta report on shared benchmark |
**Demo scenario:**
```
Parametric bracket (thickness, fillet_radius, rib_width)
→ Build123d generates STEP
→ Gmsh meshes
→ CalculiX solves (SOL 101 equivalent)
→ PyVista renders stress contour
→ Optuna optimizes for min mass @ stress constraint
→ Full loop on Linux, no NX
```
**Success criteria:**
- [ ] 3 analytical benchmarks pass within 2% of theory
- [ ] CalculiX vs Nastran delta < 5% on stress/displacement for shared benchmark
- [ ] Full optimization loop completes 50+ trials unattended
**Antoine gate:**
1. Approve CalculiX vs Nastran parity tolerance (proposed: 5% on stress, 3% on displacement)
2. Validate one benchmark result manually
3. Review Build123d geometry quality for representative model
**Risks:**
- Gmsh mesh quality on sharp fillets → **Mitigation:** define mesh size presets, add Jacobian quality check
- CalculiX .frd parsing edge cases → **Mitigation:** test against multiple element types (CQUAD4 equivalent, CHEXA equivalent)
- Build123d geometry failures on complex shapes → **Mitigation:** start with simple parametric bracket, escalate complexity gradually
---
### Sprint 3: MVP Hardening + Client-Grade Post-Processing (1 week)
**Goal:** Production-quality outputs from both solver lanes, side-by-side comparison capability.
| Task | Owner | Autonomy | Deliverable |
|------|-------|----------|-------------|
| Implement `paraview_post.py` | Developer | 🟢 90% | Publication-quality figures (headless pvpython) |
| Implement `auto_select.py` | Tech Lead → Developer | 🟡 75% | Toolchain routing rules (NX lane vs open lane) |
| Implement `spec/validator.py` | Developer | 🟢 95% | AtomizerSpec v3.0 schema validation |
| Dual-lane comparison report | Post-Processor → Developer | 🟢 85% | Side-by-side Nastran vs CalculiX with pass/fail |
| Regression test suite | Auditor → Developer | 🟢 90% | Automated benchmark + parity checks |
| MCP-CalculiX server | MCP Engineer → Developer | 🟡 70% | Tool-call interface for CalculiX |
| MCP-Gmsh server | MCP Engineer → Developer | 🟡 70% | Tool-call interface for Gmsh |
| Documentation: Integration Guide | Secretary | 🟢 95% | `docs/DEV/INTEGRATION-GUIDE.md` |
**Success criteria:**
- [ ] Dual-lane comparison passes on all 3 benchmarks
- [ ] Automated regression suite runs in CI
- [ ] MCP servers pass basic smoke tests
**Antoine gate:**
1. Approve report template and required figure list
2. Define auto-select routing rules (when NX vs when open-source)
3. Sign off MVP as "usable for real studies"
**🏁 MVP EXIT — after Sprint 3, Atomizer can run full structural optimization on Linux without NX.**
---
### Sprint 4: CFD Lane — OpenFOAM (12 weeks)
**Goal:** Automated CFD/thermal screening within the same orchestration framework.
| Task | Owner | Autonomy | Deliverable |
|------|-------|----------|-------------|
| Install OpenFOAM (Docker recommended) | IT | 🟢 Full | Working `simpleFoam` / `buoyantSimpleFoam` |
| Implement `openfoam_solver.py` | Tech Lead → Developer | 🟡 65% | Case generation + execution + result parsing |
| Extend `gmsh_mesher.py` with CFD presets | Developer | 🟡 75% | Boundary layer meshing, inflation layers |
| Extend contracts for CFD quantities | Tech Lead → Developer | 🟡 70% | Pressure, velocity, temperature fields in AtomizerResults |
| 2 CFD validation cases | Tech Lead | 🟡 60% | Lid-driven cavity + pipe flow (known analytical/reference) |
**Demo scenario:**
```
Electronics enclosure airflow
→ STEP → Gmsh CFD mesh → OpenFOAM (buoyantSimpleFoam)
→ PyVista thermal map + pressure drop
→ Variant ranking by max temperature
```
**Antoine gate:**
1. Lock one validated starter case template before generalization
2. Define screening-fidelity defaults (mesh size, turbulence model)
3. Validate thermal results against engineering judgment
**Risk:** OpenFOAM setup complexity is high. Dictionary validation is error-prone.
**Mitigation:** Start with one locked template, generalize only after it works.
---
### Sprint 5: Coupled Thermo-Structural — preCICE (12 weeks)
**Goal:** Two-way coupled OpenFOAM ↔ CalculiX simulations.
| Task | Owner | Autonomy | Deliverable |
|------|-------|----------|-------------|
| Install preCICE + adapters | IT | 🟢 Full | preCICE + CalculiX adapter + OpenFOAM adapter |
| Implement `coupling.py` | Tech Lead → Developer | 🟡 60% | Coupled orchestration with convergence monitoring |
| 1 coupled benchmark | Tech Lead | 🔴 50% | Heated plate with thermal expansion |
**Antoine gate:** Approve coupling parameters and convergence criteria.
**Risk:** Coupling divergence, debugging complexity.
**Mitigation:** Conservative time-step, explicit convergence checks, one golden benchmark.
---
### Sprint 6: Multi-Objective + MDO — pymoo + OpenMDAO (12 weeks)
**Goal:** Pareto optimization across multiple objectives and disciplines.
| Task | Owner | Autonomy | Deliverable |
|------|-------|----------|-------------|
| Implement `pymoo_backend.py` | Optimizer → Developer | 🟢 85% | NSGA-II/III alongside Optuna |
| Pareto front visualization | Post-Processor → Developer | 🟢 90% | Interactive Pareto plots |
| OpenMDAO integration (if scope allows) | Tech Lead → Developer | 🟡 60% | MDO wiring for multi-discipline |
| 1 multi-objective demo | Optimizer + Tech Lead | 🟡 70% | Mass vs stress vs temperature Pareto |
**Antoine gate:** Define objective scaling and hard constraints.
---
## 5. Semi-Autonomous Workflow
```
┌─────────────────────────────────────────────────────────┐
│ PER-SPRINT LOOP │
│ │
│ 1. Antoine picks sprint / approves scope [YOU] │
│ 2. HQ researches + designs architecture [AUTO] │
│ 3. Auditor reviews design for risks [AUTO] │
│ 4. Antoine approves architecture (15 min) [YOU] │
│ 5. Developer implements + writes tests [AUTO] │
│ 6. Auditor reviews code against protocols [AUTO] │
│ 7. Antoine validates one benchmark (2-3 hrs) [YOU] │
│ 8. Merge → next sprint [AUTO] │
│ │
│ Your time: ~2-3 hours/sprint │
│ HQ time: days of implementation/sprint │
└─────────────────────────────────────────────────────────┘
```
**What runs fully autonomously (steps 2-3, 5-6):**
- Research tool capabilities, formats, Python bindings
- Design processor architecture and contract extensions
- Implement Python adapters, parsers, converters
- Write and run unit tests against analytical benchmarks
- Audit code against Atomizer protocols
- Generate regression reports
**What needs your engineering judgment (steps 1, 4, 7):**
- Tool priority sequencing (strategic call)
- Architecture approval (15-min review)
- Cross-solver parity acceptance (is 5% delta OK?)
- Benchmark validation (does this match physics?)
- Geometry quality assessment (does Build123d output look right?)
---
## 6. Quality Gates (Auditor-Defined)
### Per-Processor Gate
- [ ] Processor implements abstract base class correctly
- [ ] Round-trip test: contract → native format → solve → parse → contract
- [ ] At least 1 analytical benchmark passes within tolerance
- [ ] Unit test coverage ≥ 80% for parser logic
- [ ] Error handling for: missing files, solver crash, malformed output
- [ ] Documentation: input/output formats, known limitations
### Per-Sprint Gate
- [ ] All processor gates pass
- [ ] Integration test: full pipeline from AtomizerSpec → results
- [ ] Regression: no existing tests broken
- [ ] Parity check (if applicable): new solver vs reference solver
- [ ] Tech Lead sign-off on physics validity
- [ ] Auditor sign-off on code quality + protocol compliance
### MVP Gate (Sprint 3 Exit)
- [ ] 3 analytical benchmarks pass (cantilever, plate-hole, modal)
- [ ] CalculiX vs Nastran parity < 5% stress, < 3% displacement
- [ ] 50-trial optimization completes unattended
- [ ] Dual-lane comparison report generates automatically
- [ ] Antoine validates one real-world study through the new pipeline
- [ ] All regression tests pass in CI
---
## 7. Risk Register
| # | Risk | Impact | Likelihood | Mitigation | Owner |
|---|------|--------|------------|------------|-------|
| R1 | CalculiX vs Nastran parity exceeds tolerance | High | Medium | Start with simple geometries, document element type mapping, investigate mesh sensitivity | Tech Lead |
| R2 | Gmsh mesh quality on complex geometry | Medium | Medium | Define quality thresholds, add Jacobian/aspect-ratio checks, fallback presets | Tech Lead |
| R3 | Build123d limitations on complex parametric models | Medium | Low | Start simple, escalate complexity, keep NX lane as fallback | Developer |
| R4 | Contract design locks in wrong abstractions | High | Low | Freeze contracts only after Sprint 1 validation, allow minor evolution in Sprint 2 | Tech Lead + Auditor |
| R5 | Package dependency conflicts on T420 | Low | Medium | Use venv or Docker dev environment | IT |
| R6 | OpenFOAM setup complexity delays Sprint 4 | Medium | High | Docker-first approach, one locked template | IT + Tech Lead |
| R7 | Scope creep into expansion tools before MVP stable | High | Medium | Hard gate: no Sprint 4+ work until Sprint 3 exit criteria met | Manager + Auditor |
| R8 | MCP server maintenance burden | Low | Medium | MVP cap at 4 MCP servers, thin wrappers only | MCP Engineer |
---
## 8. Tool Installation Reference
### Sprint 0-2 (Core)
```bash
# Python packages
pip install gmsh pygmsh build123d meshio pyvista
# CalculiX solver
sudo apt install calculix-ccx
# ParaView (Sprint 3)
sudo apt install paraview
```
### Sprint 4+ (Expansion)
```bash
# OpenFOAM via Docker
docker pull openfoam/openfoam-dev
# preCICE
sudo apt install libprecice-dev python3-precice
# pymoo
pip install pymoo
# OpenMDAO
pip install openmdao
```
---
## 9. Success Metrics
| Metric | Sprint 3 Target | Sprint 6 Target |
|--------|----------------|----------------|
| Solver lanes operational | 2 (Nastran + CalculiX) | 4 (+OpenFOAM + coupled) |
| Optimization trials/hr (bracket-class) | 50+ | 100+ |
| Analytical benchmarks passing | 3 | 8+ |
| Cross-solver parity verified | Nastran ↔ CalculiX | + OpenFOAM thermal |
| Automation level (no human in loop) | 70% | 85% |
| MCP servers | 2 (CalculiX, Gmsh) | 4 |
---
## 10. Immediate Next Steps
1. **Antoine:** Approve this plan and Sprint 0-1 scope
2. **IT/Developer:** Run Sprint 0 package installs (est. 1-2 hours)
3. **Tech Lead:** Finalize contract dataclass specs with field-level detail
4. **Developer:** Scaffold `atomizer/` package structure
5. **Auditor:** Prepare benchmark expected-value files for 3 analytical cases
6. **Manager:** Create Mission Dashboard tasks for Sprint 0 + Sprint 1
---
*This plan is a living document. Update after each sprint retrospective.*

50
hq/.gitignore vendored
View File

@@ -1,6 +1,54 @@
# Secrets
.env
*.log
.env.*
config/*.env
config/.discord-tokens.env
config/shared-credentials.json
# Python
__pycache__/
*.py[cod]
*.so
.venv/
venv/
# Node
node_modules/
package-lock.json
# Job queue data (ephemeral)
job-queue/inbox/*
job-queue/outbox/*
job-queue/archive/*
!job-queue/*/.gitkeep
# Tool venvs
tools/nxopen-mcp/.venv/
# Dashboard deps + build
dashboard/frontend/node_modules/
dashboard/frontend/dist/
dashboard/venv/
# Bridge deps
bridge/node_modules/
discord-bridge/node_modules/
# Instances
instances/*/browser/
# Logs (ephemeral)
logs/
*.log
# Handoffs (ephemeral orchestration data)
handoffs/
# OS
.DS_Store
Thumbs.db
# Legacy deliverables
deliverables/
tools/nxopen-mcp/
dashboard/

View File

@@ -1,45 +1,63 @@
# Atomizer Engineering Co.
# Atomizer-HQ 🎯
AI-powered FEA optimization company running on Clawdbot multi-agent.
> The AI operations team that builds, tests, improves, and operates [Atomizer](http://192.168.86.50:3000/Antoine/Atomizer-V2).
## Quick Start
## What is HQ?
1. Install Docker: `sudo apt install docker.io docker-compose-v2 -y`
2. Copy `.env.template``.env` and fill in tokens
3. Build image: `docker build -t clawdbot:local .` (from Clawdbot repo)
4. Start: `docker compose up -d`
5. Check logs: `docker compose logs -f atomizer-gateway`
**Atomizer** = the product (optimization framework, code, AOM docs)
**Atomizer-HQ** = the AI team that operates it (agent workspaces, memory, skills, orchestration)
Think of it as: Atomizer is the race car, HQ is the pit crew.
## Structure
```
atomizer/
├── docker-compose.yml # Docker Compose config
├── .env.template # Environment template (copy to .env)
├── config/
── clawdbot.json # Gateway config (multi-agent)
├── workspaces/
│ ├── manager/ # 🎯 Manager agent workspace
│ ├── secretary/ # 📋 Secretary agent workspace
── technical-lead/ # 🔧 Technical Lead agent workspace
├── skills/
│ ├── atomizer-company/ # Company identity skill
── atomizer-protocols/ # Engineering protocols skill
├── job-queue/
│ ├── inbox/ # Results from Windows → agents
│ ├── outbox/ # Job files from agents → Windows
│ └── archive/ # Processed jobs
── shared/ # Shared resources (read-only)
atomizer-hq/
├── workspaces/ # Agent workspaces (SOUL.md, IDENTITY.md, MEMORY.md, etc.)
│ ├── manager/ # 🎯 Engineering Manager / Orchestrator
│ ├── secretary/ # 📋 CEO Interface, Admin
── technical-lead/ # 🔧 FEA Expert, R&D Lead
│ ├── optimizer/ # ⚡ Algorithm Specialist
│ ├── study-builder/ # 🏗️ Study Code Engineer
│ ├── auditor/ # 🔍 Quality Gatekeeper
── webster/ # 🌐 Web Research
│ └── nx-expert/ # 🖥️ NX/Simcenter Specialist
├── skills/ # HQ-specific agent skills
── atomizer-company/ # Company identity
│ └── atomizer-protocols/ # Engineering protocols
├── shared/ # Shared resources (tools, skills, windows helpers)
├── hq/ # HQ operational data (taskboard, condensations)
├── mission-control/ # Mission dashboard (web UI)
── scripts/ # Automation scripts
├── tools/ # MCP servers, utilities
├── config/ # Gateway config (secrets excluded)
├── CHANNELS.md # Slack channel mapping
└── docker-compose.yml # Legacy Docker config
```
## Agents (Phase 0)
## Agents
| Agent | Emoji | Channel | Model |
|-------|-------|---------|-------|
| Manager | 🎯 | #hq | Opus 4.6 |
| Secretary | 📋 | #secretary | Opus 4.6 |
| Technical Lead | 🔧 | (delegated) | Opus 4.6 |
| Agent | Emoji | Model | Status |
|-------|-------|-------|--------|
| Manager | 🎯 | Opus 4.6 | Active |
| Secretary | 📋 | Opus 4.6 | Active |
| Technical Lead | 🔧 | Opus 4.6 | Active |
| Optimizer | ⚡ | Opus 4.6 | Active |
| Study Builder | 🏗️ | Opus 4.6 | Active |
| Auditor | 🔍 | Opus 4.6 | Active |
| Webster | 🌐 | Opus 4.6 | Active |
| NX Expert | 🖥️ | Opus 4.6 | Phase 2 |
## Ports
- Mario (existing): 18789 (systemd)
- Atomizer (new): 18790 → 18789 (Docker)
## Key Decisions
- **DEC-037**: Atomizer and HQ are separate entities (2026-02-23)
- HQ repo: `192.168.86.50:3000/Antoine/Atomizer-HQ`
- Atomizer V2 repo: `192.168.86.50:3000/Antoine/Atomizer-V2`
- HQ follows AOM as its operating manual, but HQ configs live here
## Infrastructure
- **Host:** T420 (clawdbot)
- **Platform:** OpenClaw multi-agent gateway
- **Channels:** Dedicated Slack workspace
- **CEO:** Antoine Letarte

View File

@@ -1,44 +0,0 @@
#!/usr/bin/env bash
# Atomizer Cluster Management Script
set -euo pipefail
AGENTS=(manager tech-lead secretary auditor optimizer study-builder nx-expert webster)
SERVICE_PREFIX="openclaw-atomizer@"
case "${1:-help}" in
start)
for a in "${AGENTS[@]}"; do
echo "Starting ${a}..."
systemctl --user enable --now "${SERVICE_PREFIX}${a}.service"
done
echo "All agents started."
;;
stop)
for a in "${AGENTS[@]}"; do
echo "Stopping ${a}..."
systemctl --user stop "${SERVICE_PREFIX}${a}.service" || true
done
echo "All agents stopped."
;;
restart)
for a in "${AGENTS[@]}"; do
echo "Restarting ${a}..."
systemctl --user restart "${SERVICE_PREFIX}${a}.service"
done
echo "All agents restarted."
;;
status)
for a in "${AGENTS[@]}"; do
systemctl --user status "${SERVICE_PREFIX}${a}.service" --no-pager -l 2>/dev/null | head -3
echo "---"
done
;;
logs)
agent="${2:-manager}"
journalctl --user -u "${SERVICE_PREFIX}${agent}.service" -f --no-pager
;;
*)
echo "Usage: $0 {start|stop|restart|status|logs [agent]}"
exit 1
;;
esac

View File

@@ -21,7 +21,7 @@
name: "Manager",
workspace: "/home/papa/atomizer/workspaces/manager",
identity: { name: "Atomizer Manager", emoji: "🎯" },
model: "anthropic/claude-opus-4-6",
model: "openai-codex/gpt-5.4",
groupChat: { mentionPatterns: ["@manager", "@Manager", "🎯"] },
subagents: { allowAgents: ["*"] }
},

View File

@@ -1,11 +0,0 @@
{
"schemaVersion": "1.0",
"runId": "orch-1771176737-8c14d6cf",
"agent": "webster",
"status": "failed",
"result": null,
"artifacts": [],
"confidence": "low",
"notes": "web_search tool failed due to a missing Brave API key. I am unable to access the internet to find the density of Zerodur.",
"timestamp": "2026-02-15T12:32:00-05:00"
}

View File

@@ -1,11 +0,0 @@
{
"schemaVersion": "1.0",
"runId": "orch-1771176838-52dc0c1b",
"agent": "webster",
"status": "blocked",
"result": "Could not retrieve CTE and density for Clearceram-Z HS.",
"artifacts": [],
"confidence": "low",
"notes": "The primary data source appears to be a PDF file (https://oharacorp.com/wp-content/uploads/2022/11/clearerem.pdf). My current tools are unable to parse PDF files to extract the required data. I was also unable to find the data in a standard HTML or text format.",
"timestamp": "2026-02-15T12:35:45-05:00"
}

View File

@@ -0,0 +1,17 @@
# MODEL-CHANGES-NEEDED
Do **not** apply automatically. These are required edits for gateway `config.patch`.
## Required model assignment changes
1. **optimizer**
- Current: `anthropic/claude-opus-4-6`
- Change to: `anthropic/claude-sonnet-4-5`
2. **secretary**
- Current: `anthropic/claude-sonnet-4-5`
- Change to: `google/gemini-2.5-flash`
## Rationale
- Optimizer workload is mostly structured optimization planning/execution, better cost-efficiency on Sonnet 4.5.
- Secretary workload is summarization/admin condensation, best fit and lowest cost on Flash.

46
hq/hq/taskboard.json Normal file
View File

@@ -0,0 +1,46 @@
{
"board": "atomizer-hq",
"version": "1.0",
"tasks": [
{
"id": "ATZ-001",
"title": "Example: Material Trade Study for M2",
"description": "Compare Zerodur Class 0 vs CCZ HS for M2/M3 mirrors",
"status": "backlog",
"priority": "high",
"assignee": null,
"project": "gigabit-m1",
"created": "2026-02-18T20:00:00Z",
"updated": "2026-02-18T20:00:00Z",
"context": "M2/M3 mirrors need CTE < 0.01 ppm/K at operating temp. Budget constraint.",
"subtasks": [
{
"id": "s1",
"title": "Research material properties",
"assignee": "webster",
"done": false
},
{
"id": "s2",
"title": "Technical evaluation",
"assignee": "tech-lead",
"done": false
},
{
"id": "s3",
"title": "Quality review",
"assignee": "auditor",
"done": false
},
{
"id": "s4",
"title": "Summary report",
"assignee": "secretary",
"done": false
}
],
"deliverables": [],
"comments": []
}
]
}

View File

@@ -1,4 +0,0 @@
{
"version": 1,
"jobs": []
}

View File

@@ -1,4 +0,0 @@
{
"version": 1,
"jobs": []
}

View File

@@ -1,34 +0,0 @@
{
"8c1e44393c844822a8a5129b69e12c9ebdd8bf93a51eebbfa0c5405c673130d0": {
"deviceId": "8c1e44393c844822a8a5129b69e12c9ebdd8bf93a51eebbfa0c5405c673130d0",
"publicKey": "fejk4Um31-XMqj58QkHSPd4DepfwG1RfvAgc0pcioe8",
"platform": "linux",
"clientId": "gateway-client",
"clientMode": "backend",
"role": "operator",
"roles": [
"operator"
],
"scopes": [
"operator.admin",
"operator.approvals",
"operator.pairing"
],
"tokens": {
"operator": {
"token": "266c2f244dc4453cb621f7fe9b04c82b",
"role": "operator",
"scopes": [
"operator.admin",
"operator.approvals",
"operator.pairing"
],
"createdAtMs": 1771083769964,
"lastUsedAtMs": 1771252499109
}
},
"createdAtMs": 1771083769964,
"approvedAtMs": 1771083769964,
"displayName": "agent"
}
}

View File

@@ -1 +0,0 @@
{}

View File

@@ -1 +0,0 @@
OPENCLAW_GATEWAY_PORT=18812

View File

@@ -1,16 +0,0 @@
{
"version": 1,
"deviceId": "8c1e44393c844822a8a5129b69e12c9ebdd8bf93a51eebbfa0c5405c673130d0",
"tokens": {
"operator": {
"token": "266c2f244dc4453cb621f7fe9b04c82b",
"role": "operator",
"scopes": [
"operator.admin",
"operator.approvals",
"operator.pairing"
],
"updatedAtMs": 1771252499124
}
}
}

View File

@@ -1,7 +0,0 @@
{
"version": 1,
"deviceId": "8c1e44393c844822a8a5129b69e12c9ebdd8bf93a51eebbfa0c5405c673130d0",
"publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAfejk4Um31+XMqj58QkHSPd4DepfwG1RfvAgc0pcioe8=\n-----END PUBLIC KEY-----\n",
"privateKeyPem": "-----BEGIN PRIVATE KEY-----\nMC4CAQAwBQYDK2VwBCIEIP4KzGQVG2NLIN0Sn8qdfpJUP/+z11Su0LNLvqcucqdc\n-----END PRIVATE KEY-----\n",
"createdAtMs": 1771083769933
}

View File

@@ -1,196 +0,0 @@
{
"logging": {
"level": "trace",
"file": "/tmp/openclaw/atomizer-auditor.log",
"redactSensitive": "tools"
},
"agents": {
"defaults": {
"model": {
"primary": "google/gemini-2.5-pro"
},
"skipBootstrap": true,
"bootstrapMaxChars": 25000,
"userTimezone": "America/Toronto",
"typingIntervalSeconds": 4,
"typingMode": "instant",
"maxConcurrent": 4,
"subagents": {
"maxConcurrent": 4
},
"compaction": {
"mode": "safeguard",
"memoryFlush": {
"enabled": true
}
},
\"contextPruning\": {\n \"mode\": \"cache-ttl\",\n \"ttl\": \"15m\",\n \"keepLastAssistants\": 3,\n \"softTrimRatio\": 0.6,\n \"hardClearRatio\": 0.8,\n \"minPrunableToolChars\": 2000\n },\n \"heartbeat\": {\n \"every\": \"30m\",\n \"target\": \"discord\"\n }\n },\n \"list\": [\n {\n \"id\": \"main\",\n \"default\": true,\n \"name\": \"Atomizer Auditor\",\n \"workspace\": \"/home/papa/atomizer/workspaces/auditor\",\n \"model\": \"google/gemini-2.5-pro\",\n \"identity\": {\n \"name\": \"Atomizer Auditor\",\n \"theme\": \"Quality gatekeeper. Skeptical, thorough, direct. Reviews every deliverable. Has veto power.\",\n \"emoji\": \"\\ud83d\\udd0d\"\n },\n \"groupChat\": {\n \"mentionPatterns\": [\n \"@auditor\",\n \"@Auditor\",\n \"\\ud83d\\udd0d\"\n ]\n },\n \"subagents\": {\n \"allowAgents\": [\n \"*\"\n ]\n }\n }\n ]\n },\n \"messages\": {\n \"responsePrefix\": \"[{identity.name}] \",\n \"queue\": {\n \"mode\": \"collect\",\n \"debounceMs\": 2000,\n \"cap\": 20\n },\n \"inbound\": {\n \"debounceMs\": 3000\n },\n \"ackReaction\": \"\",\n \"ackReactionScope\": \"group-mentions\"\n },\n \"commands\": {\n \"native\": \"auto\",\n \"nativeSkills\": \"auto\"\n },\n \"hooks\": {\n \"enabled\": true,\n \"token\": \"31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1\",\n \"allowRequestSessionKey\": true,\n \"allowedSessionKeyPrefixes\": [\n \"agent:\",\n \"hook:\"\n ],\n \"allowedAgentIds\": [\n \"*\"\n ]\n },\n \"channels\": {\n \"discord\": {\n \"enabled\": true,\n \"commands\": {\n \"native\": false\n },\n \"groupPolicy\": \"allowlist\",\n \"dm\": {\n \"enabled\": true,\n \"policy\": \"allowlist\",\n \"allowFrom\": [\n \"user:719982779793932419\"\n ]\n },\n \"guilds\": {\n \"1471858733452890132\": {\n \"requireMention\": true,\n \"users\": [\n \"user:719982779793932419\"\n ],\n \"channels\": {\n \"feed\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"technical\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"rnd\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"lessons-learned\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"knowledge-base\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"it\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"proj-hydrotech-beam\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"dm-auditor\": {\n \"allow\": true,\n \"requireMention\": false\n },\n \"hq\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"reports\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"announcements\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"agent-logs\": {\n \"allow\": true,\n \"requireMention\": true\n }\n }\n }\n },\n \"token\": \"${DISCORD_TOKEN_AUDITOR}\",\n \"allowBots\": true\n }\n },\n \"gateway\": {\n \"port\": 18812,\n \"mode\": \"local\",\n \"bind\": \"loopback\",\n \"auth\": {\n \"token\": \"31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1\"\n },\n \"remote\": {\n \"url\": \"ws://127.0.0.1:18812\",\n \"token\": \"31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1\"\n }\n },\n \"skills\": {\n \"load\": {\n \"extraDirs\": [\n \"/home/papa/atomizer/skills\"\n ]\n }\n },\n \"plugins\": {\n \"entries\": {\n \"discord\": {\n \"enabled\": true\n }\n }\n },\n \"talk\": {\n \"apiKey\": \"sk_d8aa4795f7124ed052fa7de66a28a7739b8bb82789c2f398\"\n }\n}
"mode": "cache-ttl",
"ttl": "15m",
"keepLastAssistants": 3,
"softTrimRatio": 0.6,
"hardClearRatio": 0.8,
"minPrunableToolChars": 2000
}
},
"list": [
{
"id": "main",
"default": true,
"name": "Atomizer Auditor",
"workspace": "/home/papa/atomizer/workspaces/auditor",
"model": "google/gemini-2.5-pro",
"identity": {
"name": "Atomizer Auditor",
"theme": "Quality gatekeeper. Skeptical, thorough, direct. Reviews every deliverable. Has veto power.",
"emoji": "\ud83d\udd0d"
},
"groupChat": {
"mentionPatterns": [
"@auditor",
"@Auditor",
"\ud83d\udd0d"
]
},
"subagents": {
"allowAgents": [
"*"
]
}
}
]
},
"messages": {
"responsePrefix": "[{identity.name}] ",
"queue": {
"mode": "collect",
"debounceMs": 2000,
"cap": 20
},
"inbound": {
"debounceMs": 3000
},
"ackReaction": "",
"ackReactionScope": "group-mentions"
},
"commands": {
"native": "auto",
"nativeSkills": "auto"
},
"hooks": {
"enabled": true,
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1",
"allowRequestSessionKey": true,
"allowedSessionKeyPrefixes": [
"agent:",
"hook:"
],
"allowedAgentIds": [
"*"
]
},
"channels": {
"discord": {
"enabled": true,
"commands": {
"native": false
},
"groupPolicy": "allowlist",
"dm": {
"enabled": true,
"policy": "allowlist",
"allowFrom": [
"user:719982779793932419"
]
},
"guilds": {
"1471858733452890132": {
"requireMention": true,
"users": [
"user:719982779793932419"
],
"channels": {
"feed": {
"allow": true,
"requireMention": true
},
"technical": {
"allow": true,
"requireMention": true
},
"rnd": {
"allow": true,
"requireMention": true
},
"lessons-learned": {
"allow": true,
"requireMention": true
},
"knowledge-base": {
"allow": true,
"requireMention": true
},
"it": {
"allow": true,
"requireMention": true
},
"proj-hydrotech-beam": {
"allow": true,
"requireMention": true
},
"dm-auditor": {
"allow": true,
"requireMention": false
},
"hq": {
"allow": true,
"requireMention": true
},
"reports": {
"allow": true,
"requireMention": true
},
"announcements": {
"allow": true,
"requireMention": true
},
"agent-logs": {
"allow": true,
"requireMention": true
}
}
}
},
"token": "${DISCORD_TOKEN_AUDITOR}"
}
},
"gateway": {
"port": 18812,
"mode": "local",
"bind": "loopback",
"auth": {
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1"
},
"remote": {
"url": "ws://127.0.0.1:18812",
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1"
}
},
"skills": {
"load": {
"extraDirs": [
"/home/papa/atomizer/skills"
]
}
},
"plugins": {
"entries": {
"discord": {
"enabled": true
}
}
},
"talk": {
"apiKey": "sk_d8aa4795f7124ed052fa7de66a28a7739b8bb82789c2f398"
}
}

View File

@@ -1,5 +0,0 @@
{
"lastCheckedAt": "2026-02-16T23:34:56.209Z",
"lastNotifiedVersion": "2026.2.15",
"lastNotifiedTag": "latest"
}

View File

@@ -1,16 +0,0 @@
{
"version": 1,
"deviceId": "19df1a6af503f7540765d5640ca6f0c85cf7fdb32ec33ef029878f1f05e37827",
"tokens": {
"operator": {
"token": "4b9eec2c8b7d4bf880a482951f5791b7",
"role": "operator",
"scopes": [
"operator.admin",
"operator.approvals",
"operator.pairing"
],
"updatedAtMs": 1771115284656
}
}
}

View File

@@ -1,7 +0,0 @@
{
"version": 1,
"deviceId": "19df1a6af503f7540765d5640ca6f0c85cf7fdb32ec33ef029878f1f05e37827",
"publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAKs86bSka8YGeyRrzn1l/geS+LJTjgMzEPgNJLVilweM=\n-----END PUBLIC KEY-----\n",
"privateKeyPem": "-----BEGIN PRIVATE KEY-----\nMC4CAQAwBQYDK2VwBCIEIKYgmW/aukhjZiBUmuV1gjFr7X4ccTW3eaEWPxgo02+1\n-----END PRIVATE KEY-----\n",
"createdAtMs": 1771115284433
}

View File

@@ -1,29 +0,0 @@
{
"messages": {
"ackReactionScope": "group-mentions"
},
"agents": {
"defaults": {
"maxConcurrent": 4,
"subagents": {
"maxConcurrent": 8
},
"compaction": {
"mode": "safeguard"
}
}
},
"talk": {
"apiKey": "sk_d8aa4795f7124ed052fa7de66a28a7739b8bb82789c2f398"
},
"wizard": {
"lastRunAt": "2026-02-15T00:28:05.182Z",
"lastRunVersion": "2026.2.12",
"lastRunCommand": "doctor",
"lastRunMode": "local"
},
"meta": {
"lastTouchedVersion": "2026.2.12",
"lastTouchedAt": "2026-02-15T00:28:05.243Z"
}
}

View File

@@ -1,4 +0,0 @@
{
"version": 1,
"jobs": []
}

View File

@@ -1,4 +0,0 @@
{
"version": 1,
"jobs": []
}

View File

@@ -1,65 +0,0 @@
{
"84c346672e1521e33c9ef72cda3d141689ec443008da786b7cb5910053640c33": {
"deviceId": "84c346672e1521e33c9ef72cda3d141689ec443008da786b7cb5910053640c33",
"publicKey": "R9ckbOaTvIzdV4-JGOQjCFGdOh_cOJD1CD9jp0p7X7k",
"platform": "linux",
"clientId": "cli",
"clientMode": "cli",
"role": "operator",
"roles": [
"operator"
],
"scopes": [
"operator.admin",
"operator.approvals",
"operator.pairing"
],
"tokens": {
"operator": {
"token": "97dc1fe3641742f5923fe7c5ede21751",
"role": "operator",
"scopes": [
"operator.admin",
"operator.approvals",
"operator.pairing"
],
"createdAtMs": 1771083738383,
"lastUsedAtMs": 1771297525391
}
},
"createdAtMs": 1771083738383,
"approvedAtMs": 1771083738383
},
"c92ab2fbfb8dc99f25f79b9761cad67f3f73093a808392af6086a29ca10846a5": {
"deviceId": "c92ab2fbfb8dc99f25f79b9761cad67f3f73093a808392af6086a29ca10846a5",
"publicKey": "kkyMHTz_r-oIa5saYKBtAyqSm1oLibWtUnNh-klnhdo",
"displayName": "agent",
"platform": "linux",
"clientId": "gateway-client",
"clientMode": "backend",
"role": "operator",
"roles": [
"operator"
],
"scopes": [
"operator.admin",
"operator.approvals",
"operator.pairing"
],
"tokens": {
"operator": {
"token": "df722d72f1484b09810717ca02fc975a",
"role": "operator",
"scopes": [
"operator.admin",
"operator.approvals",
"operator.pairing"
],
"createdAtMs": 1771259015947,
"lastUsedAtMs": 1771260174890
}
},
"createdAtMs": 1771259015946,
"approvedAtMs": 1771259015946
}
}

View File

@@ -1 +0,0 @@
{}

View File

@@ -1 +0,0 @@
OPENCLAW_GATEWAY_PORT=18800

View File

@@ -1,16 +0,0 @@
{
"version": 1,
"deviceId": "84c346672e1521e33c9ef72cda3d141689ec443008da786b7cb5910053640c33",
"tokens": {
"operator": {
"token": "97dc1fe3641742f5923fe7c5ede21751",
"role": "operator",
"scopes": [
"operator.admin",
"operator.approvals",
"operator.pairing"
],
"updatedAtMs": 1771297525408
}
}
}

View File

@@ -1,7 +0,0 @@
{
"version": 1,
"deviceId": "84c346672e1521e33c9ef72cda3d141689ec443008da786b7cb5910053640c33",
"publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAR9ckbOaTvIzdV4+JGOQjCFGdOh/cOJD1CD9jp0p7X7k=\n-----END PUBLIC KEY-----\n",
"privateKeyPem": "-----BEGIN PRIVATE KEY-----\nMC4CAQAwBQYDK2VwBCIEIHAPhhhmTzddtgLJyJtUn82Bxp9ZuELCR73f0DNmgBIf\n-----END PRIVATE KEY-----\n",
"createdAtMs": 1771083738340
}

View File

@@ -1,293 +0,0 @@
{
"meta": {
"lastTouchedVersion": "2026.2.12",
"lastTouchedAt": "2026-02-15T02:04:34.030Z"
},
"logging": {
"level": "trace",
"file": "/tmp/openclaw/atomizer-manager.log",
"redactSensitive": "tools"
},
"agents": {
"defaults": {
"model": {
"primary": "google/gemini-2.5-pro"
},
"skipBootstrap": true,
"bootstrapMaxChars": 25000,
"userTimezone": "America/Toronto",
"contextPruning": {
"mode": "cache-ttl",
"ttl": "15m",
"keepLastAssistants": 3,
"softTrimRatio": 0.6,
"hardClearRatio": 0.8,
"minPrunableToolChars": 2000
},
"compaction": {
"mode": "safeguard",
"memoryFlush": {
"enabled": true
}
},
"typingIntervalSeconds": 4,
"typingMode": "instant",
"maxConcurrent": 4,
"subagents": {
"maxConcurrent": 4
},
"heartbeat": {
"every": "30m",
"target": "discord"
}
},
"list": [
{
"id": "main",
"default": true,
"name": "Atomizer Manager",
"workspace": "/home/papa/atomizer/workspaces/manager",
"model": "google/gemini-2.5-pro",
"identity": {
"name": "Atomizer Manager",
"theme": "Senior engineering manager. Orchestrates, delegates, enforces protocols. Decisive and strategic.",
"emoji": "\ud83c\udfaf"
},
"groupChat": {
"mentionPatterns": [
"@manager",
"@Manager",
"\ud83c\udfaf"
]
},
"subagents": {
"allowAgents": [
"*"
]
}
}
]
},
"messages": {
"responsePrefix": "[{identity.name}] ",
"queue": {
"mode": "collect",
"debounceMs": 2000,
"cap": 20
},
"inbound": {
"debounceMs": 3000
},
"ackReaction": "",
"ackReactionScope": "group-mentions"
},
"commands": {
"native": "auto",
"nativeSkills": "auto"
},
"hooks": {
"enabled": true,
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1",
"allowRequestSessionKey": true,
"allowedSessionKeyPrefixes": [
"agent:",
"hook:"
],
"allowedAgentIds": [
"*"
]
},
"channels": {
"discord": {
"enabled": true,
"commands": {
"native": false
},
"token": "MTQ3MTg2NTQ3OTA1MTM0NjAwMw.GfLrsO.Ksikd8xoXQjtO7XcBCKRSA7wnaDzDdSPsfv6SY",
"groupPolicy": "allowlist",
"dm": {
"enabled": true,
"policy": "allowlist",
"allowFrom": [
"user:719982779793932419"
]
},
"guilds": {
"1471858733452890132": {
"requireMention": true,
"users": [
"user:719982779793932419"
],
"channels": {
"feed": {
"allow": true,
"requireMention": true
},
"technical": {
"allow": true,
"requireMention": true
},
"rnd": {
"allow": true,
"requireMention": true
},
"lessons-learned": {
"allow": true,
"requireMention": true
},
"knowledge-base": {
"allow": true,
"requireMention": true
},
"it": {
"allow": true,
"requireMention": true
},
"proj-hydrotech-beam": {
"allow": true,
"requireMention": true
},
"dm-manager": {
"allow": true,
"requireMention": false
},
"hq": {
"allow": true,
"requireMention": false
},
"reports": {
"allow": true,
"requireMention": true
},
"announcements": {
"allow": true,
"requireMention": true
},
"agent-logs": {
"allow": true,
"requireMention": true
}
}
}
}
},
"slack": {
"mode": "socket",
"webhookPath": "/slack/events",
"enabled": false,
"botToken": "xoxb-10470305040052-10460352291747-t1rf0tPohZyniT7LGlfkHcTc",
"appToken": "xapp-1-A0ADM99RSLV-10460354049203-72848191ab9a849e61e1bf8c15d4240d4cf2fd1d8f6dd45bd41c5678f0ed4b52",
"userTokenReadOnly": true,
"allowBots": false,
"requireMention": false,
"groupPolicy": "allowlist",
"historyLimit": 50,
"reactionNotifications": "all",
"thread": {
"historyScope": "thread",
"inheritParent": true
},
"actions": {
"reactions": true,
"messages": true,
"pins": true,
"memberInfo": true,
"emojiList": true
},
"dm": {
"enabled": true,
"policy": "allowlist",
"allowFrom": [
"U0AE3J9MDND"
]
},
"channels": {
"C0AEJV13TEU": {
"allow": true,
"requireMention": false
},
"C0ADJALL61Z": {
"allow": true,
"requireMention": false
},
"C0AD9F7LYNB": {
"allow": true,
"requireMention": false
},
"C0AE4CESCC9": {
"allow": true,
"requireMention": false
},
"C0AEB39CE5U": {
"allow": true,
"requireMention": false
}
}
}
},
"talk": {
"apiKey": "sk_d8aa4795f7124ed052fa7de66a28a7739b8bb82789c2f398"
},
"gateway": {
"port": 18800,
"mode": "local",
"bind": "loopback",
"auth": {
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1"
},
"remote": {
"url": "ws://127.0.0.1:18800",
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1"
}
},
"skills": {
"load": {
"extraDirs": [
"/home/papa/atomizer/skills"
]
}
},
"plugins": {
"entries": {
"discord": {
"enabled": true
},
"slack": {
"enabled": false
}
}
},
"models": {
"providers": {
"google": {
"baseUrl": "https://generativelanguage.googleapis.com/v1beta",
"apiKey": "AIzaSyBtzXpScWuTYWxkuFJNiAToRFH_L0r__Bg",
"api": "google-generative-ai",
"models": [
{
"id": "gemini-2.5-pro",
"name": "Gemini 2.5 Pro",
"reasoning": true,
"input": [
"text",
"image"
],
"contextWindow": 1048576,
"maxTokens": 65536
},
{
"id": "gemini-2.5-flash",
"name": "Gemini 2.5 Flash",
"reasoning": true,
"input": [
"text",
"image"
],
"contextWindow": 1048576,
"maxTokens": 65536
}
]
}
}
}
}

View File

@@ -1,304 +0,0 @@
{
"meta": {
"lastTouchedVersion": "2026.2.12",
"lastTouchedAt": "2026-02-15T01:07:40.257Z"
},
"logging": {
"level": "trace",
"file": "/tmp/openclaw/atomizer-manager.log",
"redactSensitive": "tools"
},
"agents": {
"defaults": {
"model": {
"primary": "anthropic/claude-opus-4-6"
},
"skipBootstrap": true,
"bootstrapMaxChars": 25000,
"userTimezone": "America/Toronto",
"typingIntervalSeconds": 4,
"typingMode": "instant",
"maxConcurrent": 4,
"subagents": {
"maxConcurrent": 4
},
"compaction": {
"mode": "safeguard",
"memoryFlush": {
"enabled": true
}
},
"contextPruning": {
"mode": "cache-ttl",
"ttl": "15m",
"keepLastAssistants": 3,
"softTrimRatio": 0.6,
"hardClearRatio": 0.8,
"minPrunableToolChars": 2000
}
},
"list": [
{
"id": "main",
"default": true,
"name": "Atomizer Manager",
"workspace": "/home/papa/atomizer/workspaces/manager",
"model": "anthropic/claude-opus-4-6",
"identity": {
"name": "Atomizer Manager",
"theme": "Senior engineering manager. Orchestrates, delegates, enforces protocols. Decisive and strategic.",
"emoji": "\ud83c\udfaf"
},
"groupChat": {
"mentionPatterns": [
"@manager",
"@Manager",
"\ud83c\udfaf"
]
},
"subagents": {
"allowAgents": [
"*"
]
}
}
]
},
"messages": {
"responsePrefix": "[{identity.name}] ",
"queue": {
"mode": "collect",
"debounceMs": 2000,
"cap": 20
},
"inbound": {
"debounceMs": 3000
},
"ackReaction": "",
"ackReactionScope": "group-mentions"
},
"commands": {
"native": "auto",
"nativeSkills": "auto"
},
"hooks": {
"enabled": true,
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1",
"allowRequestSessionKey": true,
"allowedSessionKeyPrefixes": [
"agent:",
"hook:"
],
"allowedAgentIds": [
"*"
]
},
"channels": {
"discord": {
"enabled": true,
"commands": {
"native": false
},
"token": "MTQ3MTg2NTQ3OTA1MTM0NjAwMw.GfLrsO.Ksikd8xoXQjtO7XcBCKRSA7wnaDzDdSPsfv6SY",
"groupPolicy": "allowlist",
"dm": {
"enabled": true,
"policy": "allowlist",
"allowFrom": [
"719982779793932419"
]
},
"guilds": {
"1471858733452890132": {
"requireMention": true,
"users": [
"719982779793932419"
],
"channels": {
"general": {
"allow": true,
"requireMention": true
},
"ceo-office": {
"allow": true,
"requireMention": true
},
"announcements": {
"allow": true,
"requireMention": true
},
"daily-standup": {
"allow": true,
"requireMention": true
},
"technical": {
"allow": true,
"requireMention": true
},
"code-review": {
"allow": true,
"requireMention": true
},
"fea-analysis": {
"allow": true,
"requireMention": true
},
"nx-cad": {
"allow": true,
"requireMention": true
},
"task-board": {
"allow": true,
"requireMention": true
},
"meeting-notes": {
"allow": true,
"requireMention": true
},
"reports": {
"allow": true,
"requireMention": true
},
"research": {
"allow": true,
"requireMention": true
},
"science": {
"allow": true,
"requireMention": true
},
"active-projects": {
"allow": true,
"requireMention": true
},
"knowledge-base": {
"allow": true,
"requireMention": true
},
"lessons-learned": {
"allow": true,
"requireMention": true
},
"agent-logs": {
"allow": true,
"requireMention": true
},
"inter-agent": {
"allow": true,
"requireMention": true
},
"it-ops": {
"allow": true,
"requireMention": true
},
"hydrotech-beam": {
"allow": true,
"requireMention": true
},
"lab": {
"allow": true,
"requireMention": true
},
"configuration-management": {
"allow": true,
"requireMention": true
},
"dl-manager": {
"allow": true,
"requireMention": false
},
"project-dashboard": {
"allow": true,
"requireMention": true
}
}
}
}
},
"slack": {
"mode": "socket",
"webhookPath": "/slack/events",
"enabled": true,
"botToken": "xoxb-10470305040052-10460352291747-t1rf0tPohZyniT7LGlfkHcTc",
"appToken": "xapp-1-A0ADM99RSLV-10460354049203-72848191ab9a849e61e1bf8c15d4240d4cf2fd1d8f6dd45bd41c5678f0ed4b52",
"userTokenReadOnly": true,
"allowBots": false,
"requireMention": false,
"groupPolicy": "allowlist",
"historyLimit": 50,
"reactionNotifications": "all",
"thread": {
"historyScope": "thread",
"inheritParent": true
},
"actions": {
"reactions": true,
"messages": true,
"pins": true,
"memberInfo": true,
"emojiList": true
},
"dm": {
"enabled": true,
"policy": "allowlist",
"allowFrom": [
"U0AE3J9MDND"
]
},
"channels": {
"C0AEJV13TEU": {
"allow": true,
"requireMention": false
},
"C0ADJALL61Z": {
"allow": true,
"requireMention": false
},
"C0AD9F7LYNB": {
"allow": true,
"requireMention": false
},
"C0AE4CESCC9": {
"allow": true,
"requireMention": false
},
"C0AEB39CE5U": {
"allow": true,
"requireMention": false
}
}
}
},
"talk": {
"apiKey": "sk_d8aa4795f7124ed052fa7de66a28a7739b8bb82789c2f398"
},
"gateway": {
"port": 18800,
"mode": "local",
"bind": "loopback",
"auth": {
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1"
},
"remote": {
"url": "ws://127.0.0.1:18800",
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1"
}
},
"skills": {
"load": {
"extraDirs": [
"/home/papa/atomizer/skills"
]
}
},
"plugins": {
"entries": {
"discord": {
"enabled": true
},
"slack": {
"enabled": true
}
}
}
}

View File

@@ -1,282 +0,0 @@
{
"logging": {
"level": "trace",
"file": "/tmp/openclaw/atomizer-manager.log",
"redactSensitive": "tools"
},
"agents": {
"defaults": {
"model": {
"primary": "openai-codex/gpt-5.3-codex"
},
"skipBootstrap": true,
"bootstrapMaxChars": 25000,
"userTimezone": "America/Toronto",
"typingIntervalSeconds": 4,
"typingMode": "instant",
"maxConcurrent": 4,
"subagents": {
"maxConcurrent": 4
}
},
"list": [
{
"id": "main",
"default": true,
"name": "Atomizer Manager",
"workspace": "/home/papa/atomizer/workspaces/manager",
"model": "openai-codex/gpt-5.3-codex",
"identity": {
"name": "Atomizer Manager",
"theme": "Senior engineering manager. Orchestrates, delegates, enforces protocols. Decisive and strategic.",
"emoji": "\ud83c\udfaf"
},
"groupChat": {
"mentionPatterns": [
"@manager",
"@Manager",
"\ud83c\udfaf"
]
},
"subagents": {
"allowAgents": [
"*"
]
}
}
]
},
"messages": {
"responsePrefix": "[{identity.name}] ",
"queue": {
"mode": "collect",
"debounceMs": 2000,
"cap": 20
},
"inbound": {
"debounceMs": 3000
},
"ackReaction": "",
"ackReactionScope": "group-mentions"
},
"commands": {
"native": "auto",
"nativeSkills": "auto"
},
"hooks": {
"enabled": true,
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1",
"allowRequestSessionKey": true,
"allowedSessionKeyPrefixes": [
"agent:",
"hook:"
],
"allowedAgentIds": [
"*"
]
},
"channels": {
"discord": {
"enabled": true,
"commands": {
"native": false
},
"groupPolicy": "allowlist",
"token": "${DISCORD_TOKEN_MANAGER}",
"dm": {
"enabled": true,
"policy": "allowlist",
"allowFrom": [
"719982779793932419"
]
},
"guilds": {
"1471858733452890132": {
"requireMention": true,
"users": [
"719982779793932419"
],
"channels": {
"general": {
"allow": true,
"requireMention": true
},
"ceo-office": {
"allow": true,
"requireMention": true
},
"announcements": {
"allow": true,
"requireMention": true
},
"daily-standup": {
"allow": true,
"requireMention": true
},
"technical": {
"allow": true,
"requireMention": true
},
"code-review": {
"allow": true,
"requireMention": true
},
"fea-analysis": {
"allow": true,
"requireMention": true
},
"nx-cad": {
"allow": true,
"requireMention": true
},
"task-board": {
"allow": true,
"requireMention": true
},
"meeting-notes": {
"allow": true,
"requireMention": true
},
"reports": {
"allow": true,
"requireMention": true
},
"research": {
"allow": true,
"requireMention": true
},
"science": {
"allow": true,
"requireMention": true
},
"active-projects": {
"allow": true,
"requireMention": true
},
"knowledge-base": {
"allow": true,
"requireMention": true
},
"lessons-learned": {
"allow": true,
"requireMention": true
},
"agent-logs": {
"allow": true,
"requireMention": true
},
"inter-agent": {
"allow": true,
"requireMention": true
},
"it-ops": {
"allow": true,
"requireMention": true
},
"hydrotech-beam": {
"allow": true,
"requireMention": true
},
"lab": {
"allow": true,
"requireMention": true
},
"configuration-management": {
"allow": true,
"requireMention": true
}
}
}
}
},
"slack": {
"mode": "socket",
"webhookPath": "/slack/events",
"enabled": true,
"botToken": "xoxb-10470305040052-10460352291747-t1rf0tPohZyniT7LGlfkHcTc",
"appToken": "xapp-1-A0ADM99RSLV-10460354049203-72848191ab9a849e61e1bf8c15d4240d4cf2fd1d8f6dd45bd41c5678f0ed4b52",
"userTokenReadOnly": true,
"allowBots": false,
"requireMention": false,
"groupPolicy": "allowlist",
"historyLimit": 50,
"reactionNotifications": "all",
"thread": {
"historyScope": "thread",
"inheritParent": true
},
"actions": {
"reactions": true,
"messages": true,
"pins": true,
"memberInfo": true,
"emojiList": true
},
"dm": {
"enabled": true,
"policy": "allowlist",
"allowFrom": [
"U0AE3J9MDND"
]
},
"channels": {
"C0AEJV13TEU": {
"allow": true,
"requireMention": false
},
"C0ADJALL61Z": {
"allow": true,
"requireMention": false
},
"C0AD9F7LYNB": {
"allow": true,
"requireMention": false
},
"C0AE4CESCC9": {
"allow": true,
"requireMention": false
},
"C0AEB39CE5U": {
"allow": true,
"requireMention": false
}
}
}
},
"talk": {
"apiKey": "sk_d8aa4795f7124ed052fa7de66a28a7739b8bb82789c2f398"
},
"gateway": {
"port": 18800,
"mode": "local",
"bind": "loopback",
"auth": {
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1"
},
"remote": {
"url": "ws://127.0.0.1:18800",
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1"
}
},
"skills": {
"load": {
"extraDirs": [
"/home/papa/atomizer/skills"
]
}
},
"plugins": {
"entries": {
"discord": {
"enabled": true
},
"slack": {
"enabled": true
}
}
},
"meta": {
"lastTouchedVersion": "2026.2.12",
"lastTouchedAt": "2026-02-14T16:38:57.436Z"
}
}

View File

@@ -1,222 +0,0 @@
{
"logging": {
"level": "trace",
"file": "/tmp/openclaw/atomizer-manager.log",
"redactSensitive": "tools"
},
"agents": {
"defaults": {
"model": {
"primary": "anthropic/claude-opus-4-6"
},
"skipBootstrap": true,
"bootstrapMaxChars": 25000,
"userTimezone": "America/Toronto",
"typingIntervalSeconds": 4,
"typingMode": "instant",
"maxConcurrent": 4,
"subagents": {
"maxConcurrent": 4
}
},
"list": [
{
"id": "main",
"default": true,
"name": "Atomizer Manager",
"workspace": "/home/papa/atomizer/workspaces/manager",
"model": "anthropic/claude-opus-4-6",
"identity": {
"name": "Atomizer Manager",
"theme": "Senior engineering manager. Orchestrates, delegates, enforces protocols. Decisive and strategic.",
"emoji": "\ud83c\udfaf"
},
"groupChat": {
"mentionPatterns": [
"@manager",
"@Manager",
"\ud83c\udfaf"
]
},
"subagents": {
"allowAgents": [
"*"
]
}
}
]
},
"messages": {
"responsePrefix": "[{identity.name}] ",
"queue": {
"mode": "collect",
"debounceMs": 2000,
"cap": 20
},
"inbound": {
"debounceMs": 3000
},
"ackReaction": "",
"ackReactionScope": "group-mentions"
},
"commands": {
"native": "auto",
"nativeSkills": "auto"
},
"hooks": {
"enabled": true,
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1",
"allowRequestSessionKey": true,
"allowedSessionKeyPrefixes": [
"agent:",
"hook:"
],
"allowedAgentIds": [
"*"
]
},
"channels": {
"discord": {
"enabled": true,
"commands": {
"native": false
},
"groupPolicy": "allowlist",
"token": "${DISCORD_TOKEN_MANAGER}",
"dm": {
"enabled": true,
"policy": "allowlist",
"allowFrom": [
"719982779793932419"
]
},
"guilds": {
"1471858733452890132": {
"requireMention": false,
"users": [
"719982779793932419"
],
"channels": {
"ceo-office": {
"allow": true,
"requireMention": false
},
"announcements": {
"allow": true,
"requireMention": false
},
"daily-standup": {
"allow": true,
"requireMention": false
},
"active-projects": {
"allow": true,
"requireMention": false
},
"agent-logs": {
"allow": true,
"requireMention": false
},
"inter-agent": {
"allow": true,
"requireMention": false
},
"general": {
"allow": true,
"requireMention": false
},
"hydrotech-beam": {
"allow": true,
"requireMention": false
}
}
}
}
},
"slack": {
"mode": "socket",
"webhookPath": "/slack/events",
"enabled": true,
"botToken": "xoxb-10470305040052-10460352291747-t1rf0tPohZyniT7LGlfkHcTc",
"appToken": "xapp-1-A0ADM99RSLV-10460354049203-72848191ab9a849e61e1bf8c15d4240d4cf2fd1d8f6dd45bd41c5678f0ed4b52",
"userTokenReadOnly": true,
"allowBots": false,
"requireMention": false,
"groupPolicy": "allowlist",
"historyLimit": 50,
"reactionNotifications": "all",
"thread": {
"historyScope": "thread",
"inheritParent": true
},
"actions": {
"reactions": true,
"messages": true,
"pins": true,
"memberInfo": true,
"emojiList": true
},
"dm": {
"enabled": true,
"policy": "allowlist",
"allowFrom": [
"U0AE3J9MDND"
]
},
"channels": {
"C0AEJV13TEU": {
"allow": true,
"requireMention": false
},
"C0ADJALL61Z": {
"allow": true,
"requireMention": false
},
"C0AD9F7LYNB": {
"allow": true,
"requireMention": false
},
"C0AE4CESCC9": {
"allow": true,
"requireMention": false
},
"C0AEB39CE5U": {
"allow": true,
"requireMention": false
}
}
}
},
"gateway": {
"port": 18800,
"mode": "local",
"bind": "loopback",
"auth": {
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1"
},
"remote": {
"url": "ws://127.0.0.1:18800",
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1"
}
},
"skills": {
"load": {
"extraDirs": [
"/home/papa/atomizer/skills"
]
}
},
"plugins": {
"entries": {
"discord": {
"enabled": true
},
"slack": {
"enabled": true
}
}
},
"talk": {
"apiKey": "sk_d8aa4795f7124ed052fa7de66a28a7739b8bb82789c2f398"
}
}

View File

@@ -1,4 +0,0 @@
{
"version": 2,
"runs": {}
}

View File

@@ -1,5 +0,0 @@
{
"lastCheckedAt": "2026-02-16T17:31:28.215Z",
"lastNotifiedVersion": "2026.2.15",
"lastNotifiedTag": "latest"
}

View File

@@ -1,4 +0,0 @@
{
"version": 1,
"jobs": []
}

View File

@@ -1,4 +0,0 @@
{
"version": 1,
"jobs": []
}

View File

@@ -1,33 +0,0 @@
{
"c7a43186fc53dd92cdda4d8bd20da245783d3cb448bcf259f1699a6ad1a9e214": {
"deviceId": "c7a43186fc53dd92cdda4d8bd20da245783d3cb448bcf259f1699a6ad1a9e214",
"publicKey": "LHJxBXCBV90pwtWDg4vT6zkbRzlLEEHh4QQ8mS_g8i4",
"platform": "linux",
"clientId": "cli",
"clientMode": "cli",
"role": "operator",
"roles": [
"operator"
],
"scopes": [
"operator.admin",
"operator.approvals",
"operator.pairing"
],
"tokens": {
"operator": {
"token": "0047cd91d7ee435f85401bd45d527175",
"role": "operator",
"scopes": [
"operator.admin",
"operator.approvals",
"operator.pairing"
],
"createdAtMs": 1771249198394,
"lastUsedAtMs": 1771249230595
}
},
"createdAtMs": 1771249198394,
"approvedAtMs": 1771249198394
}
}

View File

@@ -1 +0,0 @@
{}

View File

@@ -1 +0,0 @@
OPENCLAW_GATEWAY_PORT=18824

View File

@@ -1,16 +0,0 @@
{
"version": 1,
"deviceId": "c7a43186fc53dd92cdda4d8bd20da245783d3cb448bcf259f1699a6ad1a9e214",
"tokens": {
"operator": {
"token": "0047cd91d7ee435f85401bd45d527175",
"role": "operator",
"scopes": [
"operator.admin",
"operator.approvals",
"operator.pairing"
],
"updatedAtMs": 1771249230600
}
}
}

View File

@@ -1,7 +0,0 @@
{
"version": 1,
"deviceId": "c7a43186fc53dd92cdda4d8bd20da245783d3cb448bcf259f1699a6ad1a9e214",
"publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEALHJxBXCBV90pwtWDg4vT6zkbRzlLEEHh4QQ8mS/g8i4=\n-----END PUBLIC KEY-----\n",
"privateKeyPem": "-----BEGIN PRIVATE KEY-----\nMC4CAQAwBQYDK2VwBCIEIGiHK6+mMAi8X0ZZV2oPj5J0uv4kqZNyG721Qfe1P0lF\n-----END PRIVATE KEY-----\n",
"createdAtMs": 1771249198345
}

View File

@@ -1,196 +0,0 @@
{
"logging": {
"level": "trace",
"file": "/tmp/openclaw/atomizer-nx-expert.log",
"redactSensitive": "tools"
},
"agents": {
"defaults": {
"model": {
"primary": "anthropic/claude-sonnet-4-5"
},
"skipBootstrap": true,
"bootstrapMaxChars": 25000,
"userTimezone": "America/Toronto",
"typingIntervalSeconds": 4,
"typingMode": "instant",
"maxConcurrent": 4,
"subagents": {
"maxConcurrent": 4
},
"compaction": {
"mode": "safeguard",
"memoryFlush": {
"enabled": true
}
},
\"contextPruning\": {\n \"mode\": \"cache-ttl\",\n \"ttl\": \"15m\",\n \"keepLastAssistants\": 3,\n \"softTrimRatio\": 0.6,\n \"hardClearRatio\": 0.8,\n \"minPrunableToolChars\": 2000\n },\n \"heartbeat\": {\n \"every\": \"30m\",\n \"target\": \"discord\"\n }\n },\n \"list\": [\n {\n \"id\": \"main\",\n \"default\": true,\n \"name\": \"Atomizer NX Expert\",\n \"workspace\": \"/home/papa/atomizer/workspaces/nx-expert\",\n \"model\": \"anthropic/claude-sonnet-4-5\",\n \"identity\": {\n \"name\": \"Atomizer NX Expert\",\n \"theme\": \"Siemens NX/CAD/CAE deep specialist.\",\n \"emoji\": \"\\ud83d\\udda5\\ufe0f\"\n },\n \"groupChat\": {\n \"mentionPatterns\": [\n \"@nx-expert\",\n \"@NX Expert\",\n \"\\ud83d\\udda5\\ufe0f\"\n ]\n },\n \"subagents\": {\n \"allowAgents\": [\n \"*\"\n ]\n }\n }\n ]\n },\n \"messages\": {\n \"responsePrefix\": \"[{identity.name}] \",\n \"queue\": {\n \"mode\": \"collect\",\n \"debounceMs\": 2000,\n \"cap\": 20\n },\n \"inbound\": {\n \"debounceMs\": 3000\n },\n \"ackReaction\": \"\",\n \"ackReactionScope\": \"group-mentions\"\n },\n \"commands\": {\n \"native\": \"auto\",\n \"nativeSkills\": \"auto\"\n },\n \"hooks\": {\n \"enabled\": true,\n \"token\": \"31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1\",\n \"allowRequestSessionKey\": true,\n \"allowedSessionKeyPrefixes\": [\n \"agent:\",\n \"hook:\"\n ],\n \"allowedAgentIds\": [\n \"*\"\n ]\n },\n \"channels\": {\n \"discord\": {\n \"enabled\": true,\n \"commands\": {\n \"native\": false\n },\n \"groupPolicy\": \"allowlist\",\n \"dm\": {\n \"enabled\": true,\n \"policy\": \"allowlist\",\n \"allowFrom\": [\n \"user:719982779793932419\"\n ]\n },\n \"guilds\": {\n \"1471858733452890132\": {\n \"requireMention\": true,\n \"users\": [\n \"user:719982779793932419\"\n ],\n \"channels\": {\n \"feed\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"technical\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"rnd\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"lessons-learned\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"knowledge-base\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"it\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"proj-hydrotech-beam\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"dm-nx-expert\": {\n \"allow\": true,\n \"requireMention\": false\n },\n \"hq\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"reports\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"announcements\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"agent-logs\": {\n \"allow\": true,\n \"requireMention\": true\n }\n }\n }\n },\n \"token\": \"${DISCORD_TOKEN_NX_EXPERT}\",\n \"allowBots\": true\n }\n },\n \"gateway\": {\n \"port\": 18824,\n \"mode\": \"local\",\n \"bind\": \"loopback\",\n \"auth\": {\n \"token\": \"31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1\"\n },\n \"remote\": {\n \"url\": \"ws://127.0.0.1:18824\",\n \"token\": \"31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1\"\n }\n },\n \"skills\": {\n \"load\": {\n \"extraDirs\": [\n \"/home/papa/atomizer/skills\"\n ]\n }\n },\n \"plugins\": {\n \"entries\": {\n \"discord\": {\n \"enabled\": true\n }\n }\n },\n \"talk\": {\n \"apiKey\": \"sk_d8aa4795f7124ed052fa7de66a28a7739b8bb82789c2f398\"\n }\n}
"mode": "cache-ttl",
"ttl": "15m",
"keepLastAssistants": 3,
"softTrimRatio": 0.6,
"hardClearRatio": 0.8,
"minPrunableToolChars": 2000
}
},
"list": [
{
"id": "main",
"default": true,
"name": "Atomizer NX Expert",
"workspace": "/home/papa/atomizer/workspaces/nx-expert",
"model": "anthropic/claude-sonnet-4-5",
"identity": {
"name": "Atomizer NX Expert",
"theme": "Siemens NX/CAD/CAE deep specialist.",
"emoji": "\ud83d\udda5\ufe0f"
},
"groupChat": {
"mentionPatterns": [
"@nx-expert",
"@NX Expert",
"\ud83d\udda5\ufe0f"
]
},
"subagents": {
"allowAgents": [
"*"
]
}
}
]
},
"messages": {
"responsePrefix": "[{identity.name}] ",
"queue": {
"mode": "collect",
"debounceMs": 2000,
"cap": 20
},
"inbound": {
"debounceMs": 3000
},
"ackReaction": "",
"ackReactionScope": "group-mentions"
},
"commands": {
"native": "auto",
"nativeSkills": "auto"
},
"hooks": {
"enabled": true,
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1",
"allowRequestSessionKey": true,
"allowedSessionKeyPrefixes": [
"agent:",
"hook:"
],
"allowedAgentIds": [
"*"
]
},
"channels": {
"discord": {
"enabled": true,
"commands": {
"native": false
},
"groupPolicy": "allowlist",
"dm": {
"enabled": true,
"policy": "allowlist",
"allowFrom": [
"user:719982779793932419"
]
},
"guilds": {
"1471858733452890132": {
"requireMention": true,
"users": [
"user:719982779793932419"
],
"channels": {
"feed": {
"allow": true,
"requireMention": true
},
"technical": {
"allow": true,
"requireMention": true
},
"rnd": {
"allow": true,
"requireMention": true
},
"lessons-learned": {
"allow": true,
"requireMention": true
},
"knowledge-base": {
"allow": true,
"requireMention": true
},
"it": {
"allow": true,
"requireMention": true
},
"proj-hydrotech-beam": {
"allow": true,
"requireMention": true
},
"dm-nx-expert": {
"allow": true,
"requireMention": false
},
"hq": {
"allow": true,
"requireMention": true
},
"reports": {
"allow": true,
"requireMention": true
},
"announcements": {
"allow": true,
"requireMention": true
},
"agent-logs": {
"allow": true,
"requireMention": true
}
}
}
},
"token": "${DISCORD_TOKEN_NX_EXPERT}"
}
},
"gateway": {
"port": 18824,
"mode": "local",
"bind": "loopback",
"auth": {
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1"
},
"remote": {
"url": "ws://127.0.0.1:18824",
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1"
}
},
"skills": {
"load": {
"extraDirs": [
"/home/papa/atomizer/skills"
]
}
},
"plugins": {
"entries": {
"discord": {
"enabled": true
}
}
},
"talk": {
"apiKey": "sk_d8aa4795f7124ed052fa7de66a28a7739b8bb82789c2f398"
}
}

View File

@@ -1,5 +0,0 @@
{
"lastCheckedAt": "2026-02-16T17:31:49.862Z",
"lastNotifiedVersion": "2026.2.15",
"lastNotifiedTag": "latest"
}

View File

@@ -1,4 +0,0 @@
{
"version": 1,
"jobs": []
}

View File

@@ -1,4 +0,0 @@
{
"version": 1,
"jobs": []
}

View File

@@ -1,34 +0,0 @@
{
"b37d0899686161eea4515f7c59d36f875de30b80e30236119067655238d920fd": {
"deviceId": "b37d0899686161eea4515f7c59d36f875de30b80e30236119067655238d920fd",
"publicKey": "vBuKXBCdvM0VJ1yg9Mydmh7tQzEjic9L1GwhQ_w1Rrg",
"platform": "linux",
"clientId": "gateway-client",
"clientMode": "backend",
"role": "operator",
"roles": [
"operator"
],
"scopes": [
"operator.admin",
"operator.approvals",
"operator.pairing"
],
"tokens": {
"operator": {
"token": "d3ed19d5f143466db08fc47693ef1121",
"role": "operator",
"scopes": [
"operator.admin",
"operator.approvals",
"operator.pairing"
],
"createdAtMs": 1771083768041,
"lastUsedAtMs": 1771249229100
}
},
"createdAtMs": 1771083768040,
"approvedAtMs": 1771083768040,
"displayName": "agent"
}
}

View File

@@ -1 +0,0 @@
{}

View File

@@ -1 +0,0 @@
OPENCLAW_GATEWAY_PORT=18816

View File

@@ -1,16 +0,0 @@
{
"version": 1,
"deviceId": "b37d0899686161eea4515f7c59d36f875de30b80e30236119067655238d920fd",
"tokens": {
"operator": {
"token": "d3ed19d5f143466db08fc47693ef1121",
"role": "operator",
"scopes": [
"operator.admin",
"operator.approvals",
"operator.pairing"
],
"updatedAtMs": 1771249229113
}
}
}

View File

@@ -1,7 +0,0 @@
{
"version": 1,
"deviceId": "b37d0899686161eea4515f7c59d36f875de30b80e30236119067655238d920fd",
"publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAvBuKXBCdvM0VJ1yg9Mydmh7tQzEjic9L1GwhQ/w1Rrg=\n-----END PUBLIC KEY-----\n",
"privateKeyPem": "-----BEGIN PRIVATE KEY-----\nMC4CAQAwBQYDK2VwBCIEIOC89NY6pTuwDTSfHzB0okQdmEwSk3YKm51eYiBh+Jo0\n-----END PRIVATE KEY-----\n",
"createdAtMs": 1771083768008
}

View File

@@ -1,196 +0,0 @@
{
"logging": {
"level": "trace",
"file": "/tmp/openclaw/atomizer-optimizer.log",
"redactSensitive": "tools"
},
"agents": {
"defaults": {
"model": {
"primary": "anthropic/claude-sonnet-4-5"
},
"skipBootstrap": true,
"bootstrapMaxChars": 25000,
"userTimezone": "America/Toronto",
"typingIntervalSeconds": 4,
"typingMode": "instant",
"maxConcurrent": 4,
"subagents": {
"maxConcurrent": 4
},
"compaction": {
"mode": "safeguard",
"memoryFlush": {
"enabled": true
}
},
\"contextPruning\": {\n \"mode\": \"cache-ttl\",\n \"ttl\": \"15m\",\n \"keepLastAssistants\": 3,\n \"softTrimRatio\": 0.6,\n \"hardClearRatio\": 0.8,\n \"minPrunableToolChars\": 2000\n },\n \"heartbeat\": {\n \"every\": \"30m\",\n \"target\": \"discord\"\n }\n },\n \"list\": [\n {\n \"id\": \"main\",\n \"default\": true,\n \"name\": \"Atomizer Optimizer\",\n \"workspace\": \"/home/papa/atomizer/workspaces/optimizer\",\n \"model\": \"anthropic/claude-sonnet-4-5\",\n \"identity\": {\n \"name\": \"Atomizer Optimizer\",\n \"theme\": \"Optimization algorithm specialist. Data-driven, strategic, skeptical of too-good results.\",\n \"emoji\": \"\\u26a1\"\n },\n \"groupChat\": {\n \"mentionPatterns\": [\n \"@optimizer\",\n \"@Optimizer\",\n \"\\u26a1\"\n ]\n },\n \"subagents\": {\n \"allowAgents\": [\n \"*\"\n ]\n }\n }\n ]\n },\n \"messages\": {\n \"responsePrefix\": \"[{identity.name}] \",\n \"queue\": {\n \"mode\": \"collect\",\n \"debounceMs\": 2000,\n \"cap\": 20\n },\n \"inbound\": {\n \"debounceMs\": 3000\n },\n \"ackReaction\": \"\",\n \"ackReactionScope\": \"group-mentions\"\n },\n \"commands\": {\n \"native\": \"auto\",\n \"nativeSkills\": \"auto\"\n },\n \"hooks\": {\n \"enabled\": true,\n \"token\": \"31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1\",\n \"allowRequestSessionKey\": true,\n \"allowedSessionKeyPrefixes\": [\n \"agent:\",\n \"hook:\"\n ],\n \"allowedAgentIds\": [\n \"*\"\n ]\n },\n \"channels\": {\n \"discord\": {\n \"enabled\": true,\n \"commands\": {\n \"native\": false\n },\n \"groupPolicy\": \"allowlist\",\n \"dm\": {\n \"enabled\": true,\n \"policy\": \"allowlist\",\n \"allowFrom\": [\n \"user:719982779793932419\"\n ]\n },\n \"guilds\": {\n \"1471858733452890132\": {\n \"requireMention\": true,\n \"users\": [\n \"user:719982779793932419\"\n ],\n \"channels\": {\n \"feed\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"technical\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"rnd\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"lessons-learned\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"knowledge-base\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"it\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"proj-hydrotech-beam\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"dm-optimizer\": {\n \"allow\": true,\n \"requireMention\": false\n },\n \"hq\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"reports\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"announcements\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"agent-logs\": {\n \"allow\": true,\n \"requireMention\": true\n }\n }\n }\n },\n \"token\": \"${DISCORD_TOKEN_OPTIMIZER}\",\n \"allowBots\": true\n }\n },\n \"gateway\": {\n \"port\": 18816,\n \"mode\": \"local\",\n \"bind\": \"loopback\",\n \"auth\": {\n \"token\": \"31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1\"\n },\n \"remote\": {\n \"url\": \"ws://127.0.0.1:18816\",\n \"token\": \"31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1\"\n }\n },\n \"skills\": {\n \"load\": {\n \"extraDirs\": [\n \"/home/papa/atomizer/skills\"\n ]\n }\n },\n \"plugins\": {\n \"entries\": {\n \"discord\": {\n \"enabled\": true\n }\n }\n },\n \"talk\": {\n \"apiKey\": \"sk_d8aa4795f7124ed052fa7de66a28a7739b8bb82789c2f398\"\n }\n}
"mode": "cache-ttl",
"ttl": "15m",
"keepLastAssistants": 3,
"softTrimRatio": 0.6,
"hardClearRatio": 0.8,
"minPrunableToolChars": 2000
}
},
"list": [
{
"id": "main",
"default": true,
"name": "Atomizer Optimizer",
"workspace": "/home/papa/atomizer/workspaces/optimizer",
"model": "anthropic/claude-sonnet-4-5",
"identity": {
"name": "Atomizer Optimizer",
"theme": "Optimization algorithm specialist. Data-driven, strategic, skeptical of too-good results.",
"emoji": "\u26a1"
},
"groupChat": {
"mentionPatterns": [
"@optimizer",
"@Optimizer",
"\u26a1"
]
},
"subagents": {
"allowAgents": [
"*"
]
}
}
]
},
"messages": {
"responsePrefix": "[{identity.name}] ",
"queue": {
"mode": "collect",
"debounceMs": 2000,
"cap": 20
},
"inbound": {
"debounceMs": 3000
},
"ackReaction": "",
"ackReactionScope": "group-mentions"
},
"commands": {
"native": "auto",
"nativeSkills": "auto"
},
"hooks": {
"enabled": true,
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1",
"allowRequestSessionKey": true,
"allowedSessionKeyPrefixes": [
"agent:",
"hook:"
],
"allowedAgentIds": [
"*"
]
},
"channels": {
"discord": {
"enabled": true,
"commands": {
"native": false
},
"groupPolicy": "allowlist",
"dm": {
"enabled": true,
"policy": "allowlist",
"allowFrom": [
"user:719982779793932419"
]
},
"guilds": {
"1471858733452890132": {
"requireMention": true,
"users": [
"user:719982779793932419"
],
"channels": {
"feed": {
"allow": true,
"requireMention": true
},
"technical": {
"allow": true,
"requireMention": true
},
"rnd": {
"allow": true,
"requireMention": true
},
"lessons-learned": {
"allow": true,
"requireMention": true
},
"knowledge-base": {
"allow": true,
"requireMention": true
},
"it": {
"allow": true,
"requireMention": true
},
"proj-hydrotech-beam": {
"allow": true,
"requireMention": true
},
"dm-optimizer": {
"allow": true,
"requireMention": false
},
"hq": {
"allow": true,
"requireMention": true
},
"reports": {
"allow": true,
"requireMention": true
},
"announcements": {
"allow": true,
"requireMention": true
},
"agent-logs": {
"allow": true,
"requireMention": true
}
}
}
},
"token": "${DISCORD_TOKEN_OPTIMIZER}"
}
},
"gateway": {
"port": 18816,
"mode": "local",
"bind": "loopback",
"auth": {
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1"
},
"remote": {
"url": "ws://127.0.0.1:18816",
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1"
}
},
"skills": {
"load": {
"extraDirs": [
"/home/papa/atomizer/skills"
]
}
},
"plugins": {
"entries": {
"discord": {
"enabled": true
}
}
},
"talk": {
"apiKey": "sk_d8aa4795f7124ed052fa7de66a28a7739b8bb82789c2f398"
}
}

View File

@@ -1,5 +0,0 @@
{
"lastCheckedAt": "2026-02-16T17:31:47.030Z",
"lastNotifiedVersion": "2026.2.15",
"lastNotifiedTag": "latest"
}

View File

@@ -1,4 +0,0 @@
{
"version": 1,
"jobs": []
}

View File

@@ -1,4 +0,0 @@
{
"version": 1,
"jobs": []
}

View File

@@ -1,33 +0,0 @@
{
"5b8eb09786f8b9cd617a1f96b42fb479d73c6fc421b168aa47124a4d74595dc3": {
"deviceId": "5b8eb09786f8b9cd617a1f96b42fb479d73c6fc421b168aa47124a4d74595dc3",
"publicKey": "lNlX0xhSVQGvufMKYuLx1C2Ed0lS9uK22f6N4MmOoPU",
"platform": "linux",
"clientId": "cli",
"clientMode": "cli",
"role": "operator",
"roles": [
"operator"
],
"scopes": [
"operator.admin",
"operator.approvals",
"operator.pairing"
],
"tokens": {
"operator": {
"token": "b6a85b3c2543407d846acb863d3d0545",
"role": "operator",
"scopes": [
"operator.admin",
"operator.approvals",
"operator.pairing"
],
"createdAtMs": 1771113526822,
"lastUsedAtMs": 1771292615826
}
},
"createdAtMs": 1771113526821,
"approvedAtMs": 1771113526821
}
}

View File

@@ -1 +0,0 @@
{}

View File

@@ -1 +0,0 @@
OPENCLAW_GATEWAY_PORT=18808

View File

@@ -1,16 +0,0 @@
{
"version": 1,
"deviceId": "5b8eb09786f8b9cd617a1f96b42fb479d73c6fc421b168aa47124a4d74595dc3",
"tokens": {
"operator": {
"token": "b6a85b3c2543407d846acb863d3d0545",
"role": "operator",
"scopes": [
"operator.admin",
"operator.approvals",
"operator.pairing"
],
"updatedAtMs": 1771292615838
}
}
}

View File

@@ -1,7 +0,0 @@
{
"version": 1,
"deviceId": "5b8eb09786f8b9cd617a1f96b42fb479d73c6fc421b168aa47124a4d74595dc3",
"publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAlNlX0xhSVQGvufMKYuLx1C2Ed0lS9uK22f6N4MmOoPU=\n-----END PUBLIC KEY-----\n",
"privateKeyPem": "-----BEGIN PRIVATE KEY-----\nMC4CAQAwBQYDK2VwBCIEIBKcz+McFIShhev0zkU/2LDwcn76MtHqmA4dKZNXX4/d\n-----END PRIVATE KEY-----\n",
"createdAtMs": 1771113526792
}

View File

@@ -1,198 +0,0 @@
{
"logging": {
"level": "trace",
"file": "/tmp/openclaw/atomizer-secretary.log",
"redactSensitive": "tools"
},
"agents": {
"defaults": {
"model": {
"primary": "google/gemini-2.5-pro"
},
"skipBootstrap": true,
"bootstrapMaxChars": 25000,
"userTimezone": "America/Toronto",
"typingIntervalSeconds": 4,
"typingMode": "instant",
"maxConcurrent": 4,
"subagents": {
"maxConcurrent": 4
},
"compaction": {
"mode": "safeguard",
"memoryFlush": {
"enabled": true
}
},
\"contextPruning\": {\n \"mode\": \"cache-ttl\",\n \"ttl\": \"15m\",\n \"keepLastAssistants\": 3,\n \"softTrimRatio\": 0.6,\n \"hardClearRatio\": 0.8,\n \"minPrunableToolChars\": 2000\n },\n \"heartbeat\": {\n \"every\": \"30m\",\n \"target\": \"discord\"\n }\n },\n \"list\": [\n {\n \"id\": \"main\",\n \"default\": true,\n \"name\": \"Atomizer Secretary\",\n \"workspace\": \"/home/papa/atomizer/workspaces/secretary\",\n \"model\": \"google/gemini-2.5-pro\",\n \"identity\": {\n \"name\": \"Atomizer Secretary\",\n \"theme\": \"Executive assistant. Filters noise, summarizes, escalates what matters. Organized and proactive.\",\n \"emoji\": \"\\ud83d\\udccb\"\n },\n \"groupChat\": {\n \"mentionPatterns\": [\n \"@secretary\",\n \"@Secretary\",\n \"\\ud83d\\udccb\"\n ]\n },\n \"subagents\": {\n \"allowAgents\": [\n \"*\"\n ]\n }\n }\n ]\n },\n \"messages\": {\n \"responsePrefix\": \"[{identity.name}] \",\n \"queue\": {\n \"mode\": \"collect\",\n \"debounceMs\": 2000,\n \"cap\": 20\n },\n \"inbound\": {\n \"debounceMs\": 3000\n },\n \"ackReaction\": \"\",\n \"ackReactionScope\": \"group-mentions\"\n },\n \"commands\": {\n \"native\": \"auto\",\n \"nativeSkills\": \"auto\"\n },\n \"hooks\": {\n \"enabled\": true,\n \"token\": \"31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1\",\n \"allowRequestSessionKey\": true,\n \"allowedSessionKeyPrefixes\": [\n \"agent:\",\n \"hook:\"\n ],\n \"allowedAgentIds\": [\n \"*\"\n ]\n },\n \"channels\": {\n \"discord\": {\n \"enabled\": true,\n \"commands\": {\n \"native\": false\n },\n \"groupPolicy\": \"allowlist\",\n \"dm\": {\n \"enabled\": true,\n \"policy\": \"allowlist\",\n \"allowFrom\": [\n \"user:719982779793932419\"\n ]\n },\n \"guilds\": {\n \"1471858733452890132\": {\n \"requireMention\": true,\n \"users\": [\n \"user:719982779793932419\"\n ],\n \"channels\": {\n \"feed\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"technical\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"rnd\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"lessons-learned\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"knowledge-base\": {\n \"allow\": true,\n \"requireMention\": true\n },\
\"it\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"proj-hydrotech-beam\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"dm-secretary\": {\n \"allow\": true,\n \"requireMention\": false\n },\n \"hq\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"reports\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"announcements\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"agent-logs\": {\n \"allow\": true,\n \"requireMention\": true\n }\n }\n }\n },\n \"token\": \"${DISCORD_TOKEN_SECRETARY}\",\n \"allowBots\": true\n }\n },\n \"gateway\": {\n \"port\": 18808,\n \"mode\": \"local\",\n \"bind\": \"loopback\",\n \"auth\": {\n \"token\": \"31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1\"\n },\n \"remote\": {\n \"url\": \"ws://127.0.0.1:18808\",\n \"token\": \"31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1\"\n }\n },\n \"skills\": {\n \"load\": {\n \"extraDirs\": [\n \"/home/papa/atomizer/skills\"\n ]\n }\n },\n \"plugins\": {\n \"entries\": {\n \"discord\": {\n \"enabled\": true\n }\n }\n },\n \"talk\": {\n \"apiKey\": \"sk_d8aa4795f7124ed052fa7de66a28a7739b8bb82789c2f398\"\n }\n}
"mode": "cache-ttl",
"ttl": "15m",
"keepLastAssistants": 3,
"softTrimRatio": 0.6,
"hardClearRatio": 0.8,
"minPrunableToolChars": 2000
}
},
"list": [
{
"id": "main",
"default": true,
"name": "Atomizer Secretary",
"workspace": "/home/papa/atomizer/workspaces/secretary",
"model": "google/gemini-2.5-pro",
"identity": {
"name": "Atomizer Secretary",
"theme": "Executive assistant. Filters noise, summarizes, escalates what matters. Organized and proactive.",
"emoji": "\ud83d\udccb"
},
"groupChat": {
"mentionPatterns": [
"@secretary",
"@Secretary",
"\ud83d\udccb"
]
},
"subagents": {
"allowAgents": [
"*"
]
}
}
]
},
"messages": {
"responsePrefix": "[{identity.name}] ",
"queue": {
"mode": "collect",
"debounceMs": 2000,
"cap": 20
},
"inbound": {
"debounceMs": 3000
},
"ackReaction": "",
"ackReactionScope": "group-mentions"
},
"commands": {
"native": "auto",
"nativeSkills": "auto"
},
"hooks": {
"enabled": true,
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1",
"allowRequestSessionKey": true,
"allowedSessionKeyPrefixes": [
"agent:",
"hook:"
],
"allowedAgentIds": [
"*"
]
},
"channels": {
"discord": {
"enabled": true,
"commands": {
"native": false
},
"groupPolicy": "allowlist",
"dm": {
"enabled": true,
"policy": "allowlist",
"allowFrom": [
"user:719982779793932419"
]
},
"guilds": {
"1471858733452890132": {
"requireMention": true,
"users": [
"user:719982779793932419"
],
"channels": {
"feed": {
"allow": true,
"requireMention": true
},
"technical": {
"allow": true,
"requireMention": true
},
"rnd": {
"allow": true,
"requireMention": true
},
"lessons-learned": {
"allow": true,
"requireMention": true
},
"knowledge-base": {
"allow": true,
"requireMention": true
},
"it": {
"allow": true,
"requireMention": true
},
"proj-hydrotech-beam": {
"allow": true,
"requireMention": true
},
"dm-secretary": {
"allow": true,
"requireMention": false
},
"hq": {
"allow": true,
"requireMention": true
},
"reports": {
"allow": true,
"requireMention": true
},
"announcements": {
"allow": true,
"requireMention": true
},
"agent-logs": {
"allow": true,
"requireMention": true
}
}
}
},
"token": "${DISCORD_TOKEN_SECRETARY}",
"allowBots": true
}
},
"gateway": {
"port": 18808,
"mode": "local",
"bind": "loopback",
"auth": {
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1"
},
"remote": {
"url": "ws://127.0.0.1:18808",
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1"
}
},
"skills": {
"load": {
"extraDirs": [
"/home/papa/atomizer/skills"
]
}
},
"plugins": {
"entries": {
"discord": {
"enabled": true
}
}
},
"talk": {
"apiKey": "sk_d8aa4795f7124ed052fa7de66a28a7739b8bb82789c2f398"
}
}

View File

@@ -1,4 +0,0 @@
{
"version": 2,
"runs": {}
}

View File

@@ -1,5 +0,0 @@
{
"lastCheckedAt": "2026-02-16T23:34:54.914Z",
"lastNotifiedVersion": "2026.2.15",
"lastNotifiedTag": "latest"
}

View File

@@ -1,4 +0,0 @@
{
"version": 1,
"jobs": []
}

View File

@@ -1,4 +0,0 @@
{
"version": 1,
"jobs": []
}

View File

@@ -1,33 +0,0 @@
{
"433b7aba11bf3243e9285b5a1cad3000206cda35763015596b4f753d47d8caa9": {
"deviceId": "433b7aba11bf3243e9285b5a1cad3000206cda35763015596b4f753d47d8caa9",
"publicKey": "B3KZQ84BJ7Kr8aJ_1NYsJUASfd95pfvxe3HMBnGYDnQ",
"platform": "linux",
"clientId": "cli",
"clientMode": "cli",
"role": "operator",
"roles": [
"operator"
],
"scopes": [
"operator.admin",
"operator.approvals",
"operator.pairing"
],
"tokens": {
"operator": {
"token": "7e2455df825246b7b8f1832bbd610988",
"role": "operator",
"scopes": [
"operator.admin",
"operator.approvals",
"operator.pairing"
],
"createdAtMs": 1771083773436,
"lastUsedAtMs": 1771249353247
}
},
"createdAtMs": 1771083773436,
"approvedAtMs": 1771083773436
}
}

View File

@@ -1 +0,0 @@
{}

View File

@@ -1 +0,0 @@
OPENCLAW_GATEWAY_PORT=18820

View File

@@ -1,16 +0,0 @@
{
"version": 1,
"deviceId": "433b7aba11bf3243e9285b5a1cad3000206cda35763015596b4f753d47d8caa9",
"tokens": {
"operator": {
"token": "7e2455df825246b7b8f1832bbd610988",
"role": "operator",
"scopes": [
"operator.admin",
"operator.approvals",
"operator.pairing"
],
"updatedAtMs": 1771249353264
}
}
}

View File

@@ -1,7 +0,0 @@
{
"version": 1,
"deviceId": "433b7aba11bf3243e9285b5a1cad3000206cda35763015596b4f753d47d8caa9",
"publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAB3KZQ84BJ7Kr8aJ/1NYsJUASfd95pfvxe3HMBnGYDnQ=\n-----END PUBLIC KEY-----\n",
"privateKeyPem": "-----BEGIN PRIVATE KEY-----\nMC4CAQAwBQYDK2VwBCIEIM3mdAQ/QFl9zqVyc2Lg/F8ZEJJc4219O2+0S6ynB+hB\n-----END PRIVATE KEY-----\n",
"createdAtMs": 1771083773401
}

View File

@@ -1,196 +0,0 @@
{
"logging": {
"level": "trace",
"file": "/tmp/openclaw/atomizer-study-builder.log",
"redactSensitive": "tools"
},
"agents": {
"defaults": {
"model": {
"primary": "anthropic/claude-sonnet-4-5"
},
"skipBootstrap": true,
"bootstrapMaxChars": 25000,
"userTimezone": "America/Toronto",
"typingIntervalSeconds": 4,
"typingMode": "instant",
"maxConcurrent": 4,
"subagents": {
"maxConcurrent": 4
},
"compaction": {
"mode": "safeguard",
"memoryFlush": {
"enabled": true
}
},
\"contextPruning\": {\n \"mode\": \"cache-ttl\",\n \"ttl\": \"15m\",\n \"keepLastAssistants\": 3,\n \"softTrimRatio\": 0.6,\n \"hardClearRatio\": 0.8,\n \"minPrunableToolChars\": 2000\n },\n \"heartbeat\": {\n \"every\": \"30m\",\n \"target\": \"discord\"\n }\n },\n \"list\": [\n {\n \"id\": \"main\",\n \"default\": true,\n \"name\": \"Atomizer Study Builder\",\n \"workspace\": \"/home/papa/atomizer/workspaces/study-builder\",\n \"model\": \"google/gemini-2.5-pro\",\n \"identity\": {\n \"name\": \"Atomizer Study Builder\",\n \"theme\": \"Meticulous study code engineer. Writes production-quality optimization scripts. Pattern-driven.\",\n \"emoji\": \"\\ud83c\\udfd7\\ufe0f\"\n },\n \"groupChat\": {\n \"mentionPatterns\": [\n \"@study-builder\",\n \"@Study Builder\",\n \"\\ud83c\\udfd7\\ufe0f\"\n ]\n },\n \"subagents\": {\n \"allowAgents\": [\n \"*\"\n ]\n }\n }\n ]\n },\n \"messages\": {\n \"responsePrefix\": \"[{identity.name}] \",\n \"queue\": {\n \"mode\": \"collect\",\n \"debounceMs\": 2000,\n \"cap\": 20\n },\n \"inbound\": {\n \"debounceMs\": 3000\n },\n \"ackReaction\": \"\",\n \"ackReactionScope\": \"group-mentions\"\n },\n \"commands\": {\n \"native\": \"auto\",\n \"nativeSkills\": \"auto\"\n },\n \"hooks\": {\n \"enabled\": true,\n \"token\": \"31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1\",\n \"allowRequestSessionKey\": true,\n \"allowedSessionKeyPrefixes\": [\n \"agent:\",\n \"hook:\"\n ],\n \"allowedAgentIds\": [\n \"*\"\n ]\n },\n \"channels\": {\n \"discord\": {\n \"enabled\": true,\n \"commands\": {\n \"native\": false\n },\n \"groupPolicy\": \"allowlist\",\n \"dm\": {\n \"enabled\": true,\n \"policy\": \"allowlist\",\n \"allowFrom\": [\n \"user:719982779793932419\"\n ]\n },\n \"guilds\": {\n \"1471858733452890132\": {\n \"requireMention\": true,\n \"users\": [\n \"user:719982779793932419\"\n ],\n \"channels\": {\n \"feed\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"technical\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"rnd\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"lessons-learned\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"knowledge-base\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"it\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"proj-hydrotech-beam\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"dm-study-builder\": {\n \"allow\": true,\n \"requireMention\": false\n },\n \"hq\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"reports\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"announcements\": {\n \"allow\": true,\n \"requireMention\": true\n },\n \"agent-logs\": {\n \"allow\": true,\n \"requireMention\": true\n }\n }\n }\n },\n \"token\": \"${DISCORD_TOKEN_STUDY_BUILDER}\",\n \"allowBots\": true\n }\n },\n \"gateway\": {\n \"port\": 18820,\n \"mode\": \"local\",\n \"bind\": \"loopback\",\n \"auth\": {\n \"token\": \"31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1\"\n },\n \"remote\": {\n \"url\": \"ws://127.0.0.1:18820\",\n \"token\": \"31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1\"\n }\n },\n \"skills\": {\n \"load\": {\n \"extraDirs\": [\n \"/home/papa/atomizer/skills\"\n ]\n }\n },\n \"plugins\": {\n \"entries\": {\n \"discord\": {\n \"enabled\": true\n }\n }\n },\n \"talk\": {\n \"apiKey\": \"sk_d8aa4795f7124ed052fa7de66a28a7739b8bb82789c2f398\"\n }\n}
"mode": "cache-ttl",
"ttl": "15m",
"keepLastAssistants": 3,
"softTrimRatio": 0.6,
"hardClearRatio": 0.8,
"minPrunableToolChars": 2000
}
},
"list": [
{
"id": "main",
"default": true,
"name": "Atomizer Study Builder",
"workspace": "/home/papa/atomizer/workspaces/study-builder",
"model": "google/gemini-2.5-pro",
"identity": {
"name": "Atomizer Study Builder",
"theme": "Meticulous study code engineer. Writes production-quality optimization scripts. Pattern-driven.",
"emoji": "\ud83c\udfd7\ufe0f"
},
"groupChat": {
"mentionPatterns": [
"@study-builder",
"@Study Builder",
"\ud83c\udfd7\ufe0f"
]
},
"subagents": {
"allowAgents": [
"*"
]
}
}
]
},
"messages": {
"responsePrefix": "[{identity.name}] ",
"queue": {
"mode": "collect",
"debounceMs": 2000,
"cap": 20
},
"inbound": {
"debounceMs": 3000
},
"ackReaction": "",
"ackReactionScope": "group-mentions"
},
"commands": {
"native": "auto",
"nativeSkills": "auto"
},
"hooks": {
"enabled": true,
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1",
"allowRequestSessionKey": true,
"allowedSessionKeyPrefixes": [
"agent:",
"hook:"
],
"allowedAgentIds": [
"*"
]
},
"channels": {
"discord": {
"enabled": true,
"commands": {
"native": false
},
"groupPolicy": "allowlist",
"dm": {
"enabled": true,
"policy": "allowlist",
"allowFrom": [
"user:719982779793932419"
]
},
"guilds": {
"1471858733452890132": {
"requireMention": true,
"users": [
"user:719982779793932419"
],
"channels": {
"feed": {
"allow": true,
"requireMention": true
},
"technical": {
"allow": true,
"requireMention": true
},
"rnd": {
"allow": true,
"requireMention": true
},
"lessons-learned": {
"allow": true,
"requireMention": true
},
"knowledge-base": {
"allow": true,
"requireMention": true
},
"it": {
"allow": true,
"requireMention": true
},
"proj-hydrotech-beam": {
"allow": true,
"requireMention": true
},
"dm-study-builder": {
"allow": true,
"requireMention": false
},
"hq": {
"allow": true,
"requireMention": true
},
"reports": {
"allow": true,
"requireMention": true
},
"announcements": {
"allow": true,
"requireMention": true
},
"agent-logs": {
"allow": true,
"requireMention": true
}
}
}
},
"token": "${DISCORD_TOKEN_STUDY_BUILDER}"
}
},
"gateway": {
"port": 18820,
"mode": "local",
"bind": "loopback",
"auth": {
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1"
},
"remote": {
"url": "ws://127.0.0.1:18820",
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1"
}
},
"skills": {
"load": {
"extraDirs": [
"/home/papa/atomizer/skills"
]
}
},
"plugins": {
"entries": {
"discord": {
"enabled": true
}
}
},
"talk": {
"apiKey": "sk_d8aa4795f7124ed052fa7de66a28a7739b8bb82789c2f398"
}
}

View File

@@ -1,5 +0,0 @@
{
"lastCheckedAt": "2026-02-16T23:34:58.964Z",
"lastNotifiedVersion": "2026.2.15",
"lastNotifiedTag": "latest"
}

View File

@@ -1,4 +0,0 @@
{
"version": 1,
"jobs": []
}

View File

@@ -1,4 +0,0 @@
{
"version": 1,
"jobs": []
}

View File

@@ -1,33 +0,0 @@
{
"931d2d32787e5e206862f6de3064131e69bd61d2a8edb32ac9a633ee9c997cd7": {
"deviceId": "931d2d32787e5e206862f6de3064131e69bd61d2a8edb32ac9a633ee9c997cd7",
"publicKey": "7o6DeC6QPO2-Q1KFlXgeDVB2mvWhoBMd-W1OKJwd_pc",
"platform": "linux",
"clientId": "cli",
"clientMode": "cli",
"role": "operator",
"roles": [
"operator"
],
"scopes": [
"operator.admin",
"operator.approvals",
"operator.pairing"
],
"tokens": {
"operator": {
"token": "7120ab625b624d8eb4cc0c7a6f1649dd",
"role": "operator",
"scopes": [
"operator.admin",
"operator.approvals",
"operator.pairing"
],
"createdAtMs": 1771083760054,
"lastUsedAtMs": 1771249081376
}
},
"createdAtMs": 1771083760053,
"approvedAtMs": 1771083760053
}
}

View File

@@ -1 +0,0 @@
{}

View File

@@ -1 +0,0 @@
OPENCLAW_GATEWAY_PORT=18804

View File

@@ -1,16 +0,0 @@
{
"version": 1,
"deviceId": "931d2d32787e5e206862f6de3064131e69bd61d2a8edb32ac9a633ee9c997cd7",
"tokens": {
"operator": {
"token": "7120ab625b624d8eb4cc0c7a6f1649dd",
"role": "operator",
"scopes": [
"operator.admin",
"operator.approvals",
"operator.pairing"
],
"updatedAtMs": 1771249081389
}
}
}

View File

@@ -1,7 +0,0 @@
{
"version": 1,
"deviceId": "931d2d32787e5e206862f6de3064131e69bd61d2a8edb32ac9a633ee9c997cd7",
"publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEA7o6DeC6QPO2+Q1KFlXgeDVB2mvWhoBMd+W1OKJwd/pc=\n-----END PUBLIC KEY-----\n",
"privateKeyPem": "-----BEGIN PRIVATE KEY-----\nMC4CAQAwBQYDK2VwBCIEIPmHG7m2/xG4CKlGz7ITTLtx8XZY9U3ba09nfjlNZnu7\n-----END PRIVATE KEY-----\n",
"createdAtMs": 1771083760022
}

View File

@@ -1,373 +0,0 @@
{
"logging": {
"level": "trace",
"file": "/tmp/openclaw/atomizer-tech-lead.log",
"redactSensitive": "tools"
},
"agents": {
"defaults": {
"model": {
"primary": "anthropic/claude-opus-4-6"
},
"skipBootstrap": true,
"bootstrapMaxChars": 25000,
"userTimezone": "America/Toronto",
"typingIntervalSeconds": 4,
"typingMode": "instant",
"maxConcurrent": 4,
"subagents": {
"maxConcurrent": 4
},
"compaction": {
"mode": "safeguard",
"memoryFlush": {
"enabled": true
}
},
"contextPruning": {
"mode": "cache-ttl",
"ttl": "15m",
"keepLastAssistants": 3,
"softTrimRatio": 0.6,
"hardClearRatio": 0.8,
"minPrunableToolChars": 2000
},
"heartbeat": {
"every": "30m",
"target": "discord"
}
},
"list": [
{
"id": "main",
"default": true,
"name": "Atomizer Tech Lead",
"workspace": "/home/papa/atomizer/workspaces/technical-lead",
"model": "anthropic/claude-opus-4-6",
"identity": {
"name": "Atomizer Tech Lead",
"theme": "Deep FEA/optimization expert. Breaks down problems, leads R&D, reviews technical work. Rigorous and thorough.",
"emoji": "\ud83d\udd27"
},
"groupChat": {
"mentionPatterns": [
"@tech-lead",
"@technical-lead",
"@Technical Lead",
"\ud83d\udd27"
]
},
"subagents": {
"allowAgents": [
"*"
]
}
}
]
},
"messages": {
"responsePrefix": "[{identity.name}] ",
"queue": {
"mode": "collect",
"debounceMs": 2000,
"cap": 20
},
"inbound": {
"debounceMs": 3000
},
"ackReaction": "",
"ackReactionScope": "group-mentions"
},
"commands": {
"native": "auto",
"nativeSkills": "auto"
},
"hooks": {
"enabled": true,
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1",
"allowRequestSessionKey": true,
"allowedSessionKeyPrefixes": [
"agent:",
"hook:"
],
"allowedAgentIds": [
"*"
]
},
"channels": {
"discord": {
"enabled": true,
"commands": {
"native": false
},
"groupPolicy": "allowlist",
"dm": {
"enabled": true,
"policy": "allowlist",
"allowFrom": [
"user:719982779793932419"
]
},
"guilds": {
"1471858733452890132": {
"requireMention": true,
"users": [
"user:719982779793932419"
],
"channels": {
"feed": {
"allow": true,
"requireMention": true
},
"technical": {
"allow": true,
"requireMention": true
},
"rnd": {
"allow": true,
"requireMention": true
},
"lessons-learned": {
"allow": true,
"requireMention": true
},
"knowledge-base": {
"allow": true,
"requireMention": true
},
"it": {
"allow": true,
"requireMention": true
},
"proj-hydrotech-beam": {
"allow": true,
"requireMention": true
},
"dm-tech-lead": {
"allow": true,
"requireMention": false
},
"hq": {
"allow": true,
"requireMention": true
},
"reports": {
"allow": true,
"requireMention": true
},
"announcements": {
"allow": true,
"requireMention": true
},
"agent-logs": {
"allow": true,
"requireMention": true
}
}
}
},
"token": "${DISCORD_TOKEN_TECH_LEAD}",
"allowBots": true
}
},
"gateway": {
"port": 18804,
"mode": "local",
"bind": "loopback",
"auth": {
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1"
},
"remote": {
"url": "ws://127.0.0.1:18804",
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1"
}
},
"skills": {
"load": {
"extraDirs": [
"/home/papa/atomizer/skills"
]
}
},
"plugins": {
"entries": {
"discord": {
"enabled": true
}
}
},
"talk": {
"apiKey": "sk_d8aa4795f7124ed052fa7de66a28a7739b8bb82789c2f398"
}
}
"mode": "cache-ttl",
"ttl": "15m",
"keepLastAssistants": 3,
"softTrimRatio": 0.6,
"hardClearRatio": 0.8,
"minPrunableToolChars": 2000
}
},
"list": [
{
"id": "main",
"default": true,
"name": "Atomizer Tech Lead",
"workspace": "/home/papa/atomizer/workspaces/technical-lead",
"model": "anthropic/claude-opus-4-6",
"identity": {
"name": "Atomizer Tech Lead",
"theme": "Deep FEA/optimization expert. Breaks down problems, leads R&D, reviews technical work. Rigorous and thorough.",
"emoji": "\ud83d\udd27"
},
"groupChat": {
"mentionPatterns": [
"@tech-lead",
"@technical-lead",
"@Technical Lead",
"\ud83d\udd27"
]
},
"subagents": {
"allowAgents": [
"*"
]
}
}
]
},
"messages": {
"responsePrefix": "[{identity.name}] ",
"queue": {
"mode": "collect",
"debounceMs": 2000,
"cap": 20
},
"inbound": {
"debounceMs": 3000
},
"ackReaction": "",
"ackReactionScope": "group-mentions"
},
"commands": {
"native": "auto",
"nativeSkills": "auto"
},
"hooks": {
"enabled": true,
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1",
"allowRequestSessionKey": true,
"allowedSessionKeyPrefixes": [
"agent:",
"hook:"
],
"allowedAgentIds": [
"*"
]
},
"channels": {
"discord": {
"enabled": true,
"commands": {
"native": false
},
"groupPolicy": "allowlist",
"dm": {
"enabled": true,
"policy": "allowlist",
"allowFrom": [
"user:719982779793932419"
]
},
"guilds": {
"1471858733452890132": {
"requireMention": true,
"users": [
"user:719982779793932419"
],
"channels": {
"feed": {
"allow": true,
"requireMention": true
},
"technical": {
"allow": true,
"requireMention": true
},
"rnd": {
"allow": true,
"requireMention": true
},
"lessons-learned": {
"allow": true,
"requireMention": true
},
"knowledge-base": {
"allow": true,
"requireMention": true
},
"it": {
"allow": true,
"requireMention": true
},
"proj-hydrotech-beam": {
"allow": true,
"requireMention": true
},
"dm-tech-lead": {
"allow": true,
"requireMention": false
},
"hq": {
"allow": true,
"requireMention": true
},
"reports": {
"allow": true,
"requireMention": true
},
"announcements": {
"allow": true,
"requireMention": true
},
"agent-logs": {
"allow": true,
"requireMention": true
}
}
}
},
"token": "${DISCORD_TOKEN_TECH_LEAD}",
"allowBots": true
}
},
"gateway": {
"port": 18804,
"mode": "local",
"bind": "loopback",
"auth": {
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1"
},
"remote": {
"url": "ws://127.0.0.1:18804",
"token": "31422bb39bc9e7a4d34f789d8a7cbc582dece8dd170dadd1"
}
},
"skills": {
"load": {
"extraDirs": [
"/home/papa/atomizer/skills"
]
}
},
"plugins": {
"entries": {
"discord": {
"enabled": true
}
}
},
"talk": {
"apiKey": "sk_d8aa4795f7124ed052fa7de66a28a7739b8bb82789c2f398"
}
}

View File

@@ -1,4 +0,0 @@
{
"version": 2,
"runs": {}
}

View File

@@ -1,5 +0,0 @@
{
"lastCheckedAt": "2026-02-16T16:42:16.153Z",
"lastNotifiedVersion": "2026.2.15",
"lastNotifiedTag": "latest"
}

View File

@@ -1 +0,0 @@
{"signin":{"active_accounts_last_emitted":"13415642725926393"},"uninstall_metrics":{"installation_date2":"1771169125"},"user_experience_metrics":{"limited_entropy_randomization_source":"07B50ADFDCDA992431D7AE73C842EB3D","low_entropy_source3":3443,"provisional_client_id":"c97abc28-8817-4c37-95fe-e82e4bc69681","pseudo_low_entropy_source":5583,"stability":{"browser_last_live_timestamp":"13415642725922854"}}}

View File

@@ -1 +0,0 @@
{"profile":{"info_cache":{"Default":{"default_avatar_fill_color":-47872,"default_avatar_stroke_color":-47872,"name":"openclaw","profile_color":"#FF4500","profile_color_seed":-47872,"profile_highlight_color":-47872,"shortcut_name":"openclaw","user_color":"#FF4500","user_name":"openclaw"}}},"signin":{"active_accounts_last_emitted":"13415642736020447"},"uninstall_metrics":{"installation_date2":"1771169136"},"user_experience_metrics":{"limited_entropy_randomization_source":"0A769CC3BC7D6B93E71DB6F6DB53BF3B","low_entropy_source3":7110,"provisional_client_id":"acfa085f-9288-4519-a5ca-e377359807ca","pseudo_low_entropy_source":3584,"stability":{"browser_last_live_timestamp":"13415642736015909"}},"variations_crash_streak":1}

View File

@@ -1,19 +0,0 @@
{
"profile": {
"name": "openclaw",
"profile_color": "#FF4500",
"user_color": "#FF4500"
},
"autogenerated": {
"theme": {
"color": -47872
}
},
"browser": {
"theme": {
"user_color2": -47872
}
},
"exit_type": "Normal",
"exited_cleanly": true
}

View File

@@ -1,17 +0,0 @@
{
"profile": {
"info_cache": {
"Default": {
"name": "openclaw",
"shortcut_name": "openclaw",
"user_name": "openclaw",
"profile_color": "#FF4500",
"user_color": "#FF4500",
"profile_color_seed": -47872,
"profile_highlight_color": -47872,
"default_avatar_fill_color": -47872,
"default_avatar_stroke_color": -47872
}
}
}
}

View File

@@ -1 +0,0 @@
2527432141186001222

View File

@@ -1 +0,0 @@
clawdbot-351069

View File

@@ -1 +0,0 @@
/tmp/com.google.Chrome.GdJr7i/SingletonSocket

Some files were not shown because too many files have changed in this diff Show More