2026-01-18 04:50:46 +01:00
# Claudeman
2026-01-21 03:13:56 +01:00
[](https://opensource.org/licenses/MIT)
[](https://nodejs.org/)
[](https://www.typescriptlang.org/)
[](./test)
2026-01-18 04:50:46 +01:00
2026-01-21 03:13:56 +01:00
**A powerful Claude Code session manager with autonomous Ralph Loop for long-running AI tasks**
2026-01-18 04:50:46 +01:00
2026-01-21 03:13:56 +01:00
Claudeman transforms Claude Code into an autonomous development powerhouse. Spawn multiple Claude CLI sessions, run them for hours with automatic context management, and let the Ralph Loop keep your AI assistant productive around the clock.
2026-01-18 04:50:46 +01:00
2026-01-21 03:13:56 +01:00
---
2026-01-18 04:50:46 +01:00
2026-01-21 03:13:56 +01:00
## Table of Contents
- [Highlights ](#highlights )
- [Quick Start ](#quick-start )
- [Screenshots ](#screenshots )
- [Features ](#features )
- [Ralph Loop ](#ralph-loop )
- [Respawn Controller ](#respawn-controller )
- [Inner Loop Tracking ](#inner-loop-tracking )
- [Token Management ](#token-management )
- [Web Interface ](#web-interface )
- [CLI Commands ](#cli-commands )
2026-01-21 04:27:09 +01:00
- [Screen Manager TUI ](#screen-manager-interactive-tui )
2026-01-21 03:13:56 +01:00
- [API Reference ](#api-reference )
- [Long-Running Sessions ](#long-running-sessions )
- [Troubleshooting ](#troubleshooting )
- [FAQ ](#faq )
- [Development ](#development )
- [Contributing ](#contributing )
- [License ](#license )
---
## Highlights
| Feature | Description |
|---------|-------------|
| **Web Interface** | Beautiful terminal UI with xterm.js, 60fps rendering, multi-tab sessions |
| **Ralph Loop** | Autonomous control loop that keeps Claude working continuously |
| **Time-Aware Sessions** | Run Claude for specific durations ("work for 8 hours") |
| **Auto Context** | Automatic `/clear` and `/compact` when tokens get high |
| **Real-time Monitoring** | Track tokens, costs, memory, background tasks |
| **Session Persistence** | Screen sessions survive server restarts |
| **Inner Loop Tracking** | Detect Ralph loops running inside Claude Code |
2026-01-21 04:27:09 +01:00
| **Screen Manager TUI** | Interactive terminal tool for managing screen sessions |
2026-01-21 03:13:56 +01:00
---
2026-01-18 04:50:46 +01:00
## Quick Start
2026-01-21 03:13:56 +01:00
### Installation
```bash
git clone https://github.com/yourusername/claudeman.git
cd claudeman
npm install
npm run build
npm link # Optional: make 'claudeman' globally available
```
### Start the Web Interface
2026-01-18 05:14:34 +01:00
```bash
claudeman web
2026-01-21 03:13:56 +01:00
# Open http://localhost:3000
2026-01-18 05:14:34 +01:00
```
2026-01-21 03:13:56 +01:00
### Your First Session
2026-01-18 21:37:03 +01:00
2026-01-21 03:13:56 +01:00
1. Click ** "Run Claude"** or press `Ctrl+Enter`
2. A case folder is created in `~/claudeman-cases/`
3. An interactive Claude terminal opens
4. Start working!
2026-01-18 21:37:03 +01:00
2026-01-21 03:13:56 +01:00
---
2026-01-18 21:37:03 +01:00
2026-01-21 03:13:56 +01:00
## Screenshots
2026-01-18 21:37:03 +01:00
2026-01-21 03:13:56 +01:00
### Main Interface
2026-01-18 21:37:03 +01:00
2026-01-21 03:13:56 +01:00

2026-01-18 05:14:34 +01:00
2026-01-21 03:13:56 +01:00
*The Claudeman web interface with session tabs, terminal, and control panels*
2026-01-18 22:04:02 +01:00
2026-01-21 03:13:56 +01:00
### Session Running
2026-01-18 22:04:02 +01:00
2026-01-21 03:13:56 +01:00

2026-01-18 22:40:26 +01:00
2026-01-21 03:13:56 +01:00
*An active Claude session with real-time terminal output*
2026-01-18 22:40:26 +01:00
2026-01-21 03:13:56 +01:00
---
2026-01-18 05:14:34 +01:00
2026-01-21 03:13:56 +01:00
## Features
2026-01-18 05:14:34 +01:00
2026-01-18 04:50:46 +01:00
### Session Management
2026-01-21 03:13:56 +01:00
- Spawn multiple Claude CLI sessions as PTY subprocesses
- Full terminal access with resize support and buffer persistence
- One-click kill for individual sessions or all at once
- Session restoration after server restarts via GNU screen
### Autonomous Operation
- **Respawn Controller**: State machine that cycles sessions (update → /clear → /init)
- **Ralph Loop**: Assigns tasks to idle sessions and monitors completion
- **Time-Aware Loops**: Auto-generate follow-up tasks when minimum duration not reached
- **Completion Detection**: Detect `<promise>PHRASE</promise>` patterns
### Context Management
- **Token Tracking**: Real-time input/output token counts per session
- **Auto-Compact**: Send `/compact` when tokens exceed 110k (configurable)
- **Auto-Clear**: Send `/clear` when tokens exceed 140k (configurable)
- **Buffer Trimming**: Automatic memory management for 12-24+ hour sessions
### Monitoring
- **Inner Loop Tracking**: Detect Ralph loops and todos inside Claude Code
- **Background Task Tracking**: Tree view of Claude's spawned tasks
- **Cost Tracking**: Total API costs across all sessions
- **Resource Monitoring**: Memory usage with color-coded warnings
---
## Ralph Loop
The **Ralph Loop** is Claudeman's signature feature - an autonomous control loop that keeps Claude working on tasks continuously.
### How It Works
1. **Assign task** to idle session
2. **Monitor output** for completion signals
3. **Detect completion** via `<promise>COMPLETE</promise>` or indicators
4. **Mark complete** , assign next task
5. **Auto-generate tasks** if min-time not reached and queue empty
6. **Repeat** until all done
### Starting a Ralph Loop
2026-01-18 04:50:46 +01:00
```bash
2026-01-21 03:13:56 +01:00
# Basic Ralph loop
2026-01-18 04:50:46 +01:00
claudeman ralph start
2026-01-21 03:13:56 +01:00
# Run for at least 4 hours
claudeman ralph start --min-hours 4
2026-01-18 04:50:46 +01:00
2026-01-21 03:13:56 +01:00
# Run for 8 hours without auto-generation
claudeman ralph start --min-hours 8 --no-auto-generate
2026-01-18 04:50:46 +01:00
```
2026-01-21 03:13:56 +01:00
### Completion Detection
2026-01-18 07:38:19 +01:00
2026-01-21 03:13:56 +01:00
The Ralph Loop detects task completion through several patterns:
2026-01-18 07:38:19 +01:00
2026-01-21 03:13:56 +01:00
| Pattern | Example |
|---------|---------|
| Promise tags | `<promise>COMPLETE</promise>` |
| Custom phrases | `<promise>AUTH_REFACTOR_DONE</promise>` |
| Common indicators | "Task completed successfully", "All done" |
| Checkmarks | "✓ Complete", "✔ Finished" |
2026-01-18 07:38:19 +01:00
2026-01-21 03:13:56 +01:00
**Custom completion phrase:**
2026-01-18 04:50:46 +01:00
```bash
2026-01-21 03:13:56 +01:00
claudeman task add "Refactor the auth module" --completion "AUTH_DONE"
# Claude outputs: <promise>AUTH_DONE</promise> when finished
2026-01-18 04:50:46 +01:00
```
2026-01-21 03:13:56 +01:00
### Time-Aware Loops
2026-01-18 04:50:46 +01:00
2026-01-21 03:13:56 +01:00
When the minimum duration hasn't been reached and all tasks complete, the Ralph Loop auto-generates follow-up tasks:
2026-01-18 04:50:46 +01:00
- Review and optimize recently changed code
- Add tests for uncovered code paths
- Update documentation
- Check for security vulnerabilities
- Run linting and fix issues
2026-01-21 03:13:56 +01:00
### Use Cases
**Overnight Code Review**
```bash
claudeman ralph start --min-hours 8
claudeman task add "Review all code in src/ for bugs and improvements"
claudeman task add "Add missing tests for edge cases"
# Let it run overnight
```
**Feature Implementation Sprint**
```bash
claudeman task add "Implement user authentication with JWT" --completion "AUTH_DONE"
claudeman task add "Add login/logout endpoints" --completion "ENDPOINTS_DONE"
claudeman task add "Write integration tests" --completion "TESTS_DONE"
claudeman ralph start --min-hours 4
```
**Continuous Documentation**
```bash
# Start a session and enable respawn
claudeman web
# In web UI: Start session, enable respawn with prompt:
# "Update documentation for any changed files, then update CLAUDE.md"
```
**Parallel Development**
```bash
claudeman web
# Create 3 sessions working on different modules
# Session 1: Frontend components
# Session 2: Backend API
# Session 3: Database migrations
```
---
## Respawn Controller
The **Respawn Controller** keeps interactive sessions productive by automatically cycling through update prompts.
### State Flow
**WATCHING** → **SENDING_UPDATE** → **WAITING_UPDATE** → **SENDING_CLEAR** → **WAITING_CLEAR** → **SENDING_INIT** → **WAITING_INIT** → **MONITORING_INIT** → back to **WATCHING**
Optional: **SENDING_KICKSTART** → **WAITING_KICKSTART** if /init doesn't trigger work
### States Explained
| State | Description |
|-------|-------------|
| `WATCHING` | Monitoring session for idle state |
| `SENDING_UPDATE` | Sending the update prompt |
| `WAITING_UPDATE` | Waiting for Claude to process |
| `SENDING_CLEAR` | Sending `/clear` command |
| `WAITING_CLEAR` | Waiting for context to clear |
| `SENDING_INIT` | Sending `/init` command |
| `WAITING_INIT` | Waiting for initialization |
| `MONITORING_INIT` | Checking if work started |
### Configuration
```bash
# Start respawn with config
curl -X POST localhost:3000/api/sessions/:id/respawn/start \
-H "Content-Type: application/json" \
-d '{
"config": {
"idleTimeoutMs": 5000,
"updatePrompt": "continue working on the current task",
"sendClear": true,
"sendInit": true
}
}'
# Enable with timed duration (120 minutes)
curl -X POST localhost:3000/api/sessions/:id/respawn/enable \
-H "Content-Type: application/json" \
-d '{
"config": {"updatePrompt": "keep improving the code"},
"durationMinutes": 120
}'
```
### Options
| Option | Default | Description |
|--------|---------|-------------|
| `idleTimeoutMs` | 5000 | Time to wait after idle before cycling |
| `updatePrompt` | "update all docs..." | Prompt sent when session goes idle |
| `sendClear` | true | Whether to send `/clear` after update |
| `sendInit` | true | Whether to send `/init` after clear |
| `kickstartPrompt` | null | Optional prompt if /init doesn't trigger work |
---
2026-01-19 13:24:45 +01:00
## Inner Loop Tracking
2026-01-21 03:13:56 +01:00
Claudeman detects when Claude Code runs its own Ralph Wiggum loops or uses TodoWrite internally.
2026-01-19 13:24:45 +01:00
2026-01-21 03:13:56 +01:00
### Detected Patterns
2026-01-19 13:24:45 +01:00
2026-01-21 03:13:56 +01:00
| Pattern | Example |
|---------|---------|
| Completion phrases | `<promise>COMPLETE</promise>` |
| Todo checkboxes | `- [ ] Task` , `- [x] Done` |
| Todo indicators | `☐ Pending` , `◐ In Progress` , `✓ Complete` |
| Iteration patterns | `Iteration 5/50` , `[5/50]` |
| Loop commands | `/ralph-loop:ralph-loop` |
| Completion messages | "All tasks completed" |
### Session-Scoped
Each session has its **own independent tracker** :
- **New session** → Fresh tracker
- **Close tab** → Tracker state cleared
- **Switch tabs** → Panel shows tracker for active session
2026-01-19 13:24:45 +01:00
### UI Display
2026-01-21 03:13:56 +01:00
A collapsible panel shows:
- **Collapsed**: Summary like "Loop: TIME_COMPLETE (2.3h) | Tasks: 3/5"
- **Expanded**: Full todo list with progress ring
2026-01-19 13:24:45 +01:00
### API
```bash
2026-01-21 03:13:56 +01:00
# Get inner state
2026-01-19 13:24:45 +01:00
curl localhost:3000/api/sessions/:id/inner-state
2026-01-21 03:13:56 +01:00
# Reset tracker
curl -X POST localhost:3000/api/sessions/:id/inner-config \
-H "Content-Type: application/json" \
-d '{"reset": true}'
2026-01-19 13:24:45 +01:00
```
2026-01-21 03:13:56 +01:00
---
## Token Management
### Token Tracking
- **Interactive mode**: Parses tokens from Claude's status line
- **One-shot mode**: Uses `--output-format stream-json`
- **Estimation**: 60/40 input/output split for interactive
### Auto-Compact
Automatically sends `/compact` when tokens exceed threshold:
```bash
curl -X POST localhost:3000/api/sessions/:id/auto-compact \
-H "Content-Type: application/json" \
-d '{"enabled": true, "threshold": 110000}'
2026-01-19 13:24:45 +01:00
```
2026-01-21 03:13:56 +01:00
### Auto-Clear
Automatically sends `/clear` when tokens exceed threshold:
```bash
curl -X POST localhost:3000/api/sessions/:id/auto-clear \
-H "Content-Type: application/json" \
-d '{"enabled": true, "threshold": 140000}'
```
| Feature | Default Threshold | Action |
|---------|------------------|--------|
| Auto-Compact | 110k tokens | `/compact` |
| Auto-Clear | 140k tokens | `/clear` |
---
## Web Interface
### Keyboard Shortcuts
| Shortcut | Action |
|----------|--------|
| `Ctrl+Enter` | Create case and start session |
| `Ctrl+W` | Close current session |
| `Ctrl+Tab` | Switch to next session |
| `Ctrl+K` | Kill all sessions |
| `Ctrl+L` | Clear terminal |
| `Ctrl++/-` | Adjust font size |
| `Escape` | Close panels |
### Multi-Tab Sessions
1. Set the number (1-10) in the tab count stepper
2. Click "Run Claude"
3. Sessions named `1-projectname` , `2-projectname` , etc.
### Monitor Panel
Combined view of:
- **Screen Sessions**: All GNU screen sessions with status
- **Background Tasks**: Tree view of Claude's spawned tasks
### UI Features
- 60fps rendering with batching
- Auto-focus for single sessions
- Scroll preservation when expanding panels
- Toast notifications
- Mobile-responsive design
---
## CLI Commands
### Sessions
```bash
claudeman start [ --dir <path>] # Start session
claudeman list # List sessions
claudeman session stop <id> # Stop session
claudeman session logs <id> # View output
```
### Tasks
```bash
claudeman task add "<prompt>" [ options]
--dir <path> # Working directory
--priority <n> # Priority (higher = first)
--completion <phrase> # Completion phrase
--timeout <ms> # Timeout
claudeman task list [ --status pending]
claudeman task remove <id>
claudeman task clear [ --all| --failed]
```
### Ralph Loop
```bash
claudeman ralph start [ --min-hours 4]
claudeman ralph stop
claudeman ralph status
```
### Server
```bash
claudeman web [ -p 8080]
claudeman status
claudeman reset --force
```
2026-01-21 04:27:09 +01:00
### Screen Manager (Interactive TUI)
```bash
./scripts/screen-manager.sh # Interactive mode with arrow navigation
./scripts/screen-manager.sh list # List all sessions
./scripts/screen-manager.sh attach 1 # Attach to session #1
./scripts/screen-manager.sh kill 2,3 # Kill sessions 2 and 3
./scripts/screen-manager.sh kill 1-5 # Kill sessions 1 through 5
./scripts/screen-manager.sh kill-all # Kill all sessions
./scripts/screen-manager.sh info 1 # Show session #1 details
```
**Interactive Controls:**
- `↑` /`↓` or `j` /`k` - Navigate sessions
- `Enter` - Attach to selected session (Ctrl+A D to detach)
- `d` - Delete selected session
- `D` - Delete ALL sessions
- `i` - Show session info
- `q` /`Esc` - Quit
Requires `jq` and `screen` packages.
2026-01-21 03:13:56 +01:00
---
## API Reference
### Sessions
| Method | Endpoint | Description |
|--------|----------|-------------|
| `GET` | `/api/sessions` | List sessions |
| `POST` | `/api/sessions` | Create session |
| `GET` | `/api/sessions/:id` | Get details |
| `DELETE` | `/api/sessions/:id` | Delete |
| `POST` | `/api/sessions/:id/input` | Send input |
| `POST` | `/api/sessions/:id/resize` | Resize terminal |
| `POST` | `/api/sessions/:id/interactive` | Start interactive |
### Respawn
| Method | Endpoint | Description |
|--------|----------|-------------|
| `POST` | `/api/sessions/:id/respawn/start` | Start |
| `POST` | `/api/sessions/:id/respawn/stop` | Stop |
| `POST` | `/api/sessions/:id/respawn/enable` | Enable with timer |
| `PUT` | `/api/sessions/:id/respawn/config` | Update config |
### Inner Loop
| Method | Endpoint | Description |
|--------|----------|-------------|
| `GET` | `/api/sessions/:id/inner-state` | Get state |
| `POST` | `/api/sessions/:id/inner-config` | Configure |
### Auto Context
| Method | Endpoint | Description |
|--------|----------|-------------|
| `POST` | `/api/sessions/:id/auto-compact` | Configure |
| `POST` | `/api/sessions/:id/auto-clear` | Configure |
### Monitoring
| Method | Endpoint | Description |
|--------|----------|-------------|
| `GET` | `/api/events` | SSE stream |
| `GET` | `/api/status` | Full state |
| `GET` | `/api/screens` | Screen list |
### Cases
| Method | Endpoint | Description |
|--------|----------|-------------|
| `GET` | `/api/cases` | List cases |
| `POST` | `/api/cases` | Create case |
| `POST` | `/api/quick-start` | Quick start |
---
2026-01-18 21:37:03 +01:00
## Long-Running Sessions
2026-01-21 03:13:56 +01:00
Optimized for 12-24+ hour autonomous sessions.
2026-01-18 21:37:03 +01:00
2026-01-21 03:13:56 +01:00
### Buffer Limits
2026-01-18 21:37:03 +01:00
2026-01-21 03:13:56 +01:00
| Buffer | Max Size | Trim To |
|--------|----------|---------|
| Terminal | 5MB | 4MB |
| Text output | 2MB | 1.5MB |
| Messages | 1000 | 800 |
| Line buffer | 64KB | flush 100ms |
2026-01-18 21:37:03 +01:00
2026-01-21 03:13:56 +01:00
### Performance
2026-01-18 21:37:03 +01:00
2026-01-21 03:13:56 +01:00
- Server batching at 60fps (16ms)
- Client requestAnimationFrame batching
- Debounced state saves (500ms)
- Aggressive process cleanup
2026-01-18 21:37:03 +01:00
2026-01-21 03:13:56 +01:00
### Best Practices
2026-01-18 21:37:03 +01:00
2026-01-21 03:13:56 +01:00
1. Enable auto-compact (threshold below auto-clear)
2. Use screen sessions for persistence
3. Monitor resource usage indicators
4. Commit frequently in Ralph loops
5. Plan for periodic breaks
2026-01-18 21:37:03 +01:00
2026-01-21 03:13:56 +01:00
---
2026-01-18 21:37:03 +01:00
2026-01-21 03:13:56 +01:00
## Troubleshooting
2026-01-18 21:37:03 +01:00
2026-01-21 03:13:56 +01:00
### Session Won't Start
2026-01-18 04:50:46 +01:00
2026-01-21 03:13:56 +01:00
```bash
which claude # Check CLI available
claude --version # Check version
screen -ls # Check screen sessions
pkill -f "SCREEN.*claudeman" # Kill stuck screens
2026-01-18 04:50:46 +01:00
```
2026-01-21 03:13:56 +01:00
### High Memory Usage
```bash
curl localhost:3000/api/sessions/:id # Check buffer sizes
# Lower auto-clear threshold
curl -X POST localhost:3000/api/sessions/:id/auto-clear \
-d '{"enabled": true, "threshold": 100000}'
```
### Respawn Not Working
1. Check for `↵ send` idle indicator
2. Verify respawn enabled via API
3. Check respawn state is `watching`
4. Increase `idleTimeoutMs` if needed
### Screen Issues
2026-01-21 04:27:09 +01:00
Use the interactive screen manager for easy session management:
```bash
./scripts/screen-manager.sh # Interactive TUI
./scripts/screen-manager.sh list # List all sessions
./scripts/screen-manager.sh kill-all # Kill all sessions
```
Or use raw commands:
2026-01-21 03:13:56 +01:00
```bash
screen -ls | grep claudeman # List screens
screen -X -S claudeman-<id> quit # Kill specific
pkill -f "SCREEN.*claudeman" # Kill all
```
---
## FAQ
**Q: How long can sessions run?**
A: 24+ hours. Buffer management keeps memory stable.
**Q: Does it work with Claude Code hooks?**
A: Yes! Claudeman spawns real Claude CLI processes.
**Q: Can I run multiple sessions?**
A: Yes, up to 50 concurrent sessions.
**Q: What if the server restarts?**
A: Screen sessions persist and auto-restore.
**Q: How does token counting work?**
A: Parses Claude's status line (e.g., "123.4k tokens").
**Q: Custom completion phrases?**
A: Yes! Use `--completion` flag or `<promise>PHRASE</promise>` .
---
2026-01-18 04:50:46 +01:00
## Development
2026-01-21 03:13:56 +01:00
### Setup
2026-01-19 03:40:57 +01:00
```bash
2026-01-21 03:13:56 +01:00
npm install
npx tsx src/index.ts web # Dev mode
npm run build # Production
npx tsc --noEmit # Type check
2026-01-19 03:40:57 +01:00
```
2026-01-21 03:13:56 +01:00
### Testing
2026-01-19 03:40:57 +01:00
```bash
2026-01-21 03:13:56 +01:00
npm run test # All tests (195)
npm run test:watch # Watch mode
npm run test:coverage # Coverage
npx vitest run -t "name" # By pattern
2026-01-19 03:40:57 +01:00
```
2026-01-21 03:13:56 +01:00
### Test Ports
2026-01-19 03:40:57 +01:00
2026-01-21 03:13:56 +01:00
| Port | Test File |
|------|-----------|
| 3099 | quick-start.test.ts |
| 3102 | session.test.ts |
| 3105 | scheduled-runs.test.ts |
| 3107 | sse-events.test.ts |
| 3110 | edge-cases.test.ts |
| 3115 | integration-flows.test.ts |
| 3120 | session-cleanup.test.ts |
2026-01-19 03:40:57 +01:00
2026-01-21 03:13:56 +01:00
---
2026-01-19 03:40:57 +01:00
2026-01-21 03:13:56 +01:00
## Contributing
2026-01-19 03:40:57 +01:00
2026-01-21 03:13:56 +01:00
1. Fork the repository
2. Create feature branch (`git checkout -b feature/amazing` )
3. Write tests for new functionality
4. Ensure tests pass (`npm test` )
5. Commit with conventional commits (`feat:` , `fix:` , `docs:` )
6. Open Pull Request
2026-01-19 03:40:57 +01:00
2026-01-21 03:13:56 +01:00
### Code Style
2026-01-19 03:40:57 +01:00
2026-01-21 03:13:56 +01:00
- TypeScript strict mode
- ES2022 target, NodeNext modules
- Pre-compile regex patterns
2026-01-19 03:40:57 +01:00
2026-01-21 03:13:56 +01:00
---
2026-01-19 03:40:57 +01:00
2026-01-21 03:13:56 +01:00
## License
2026-01-19 03:40:57 +01:00
2026-01-21 03:13:56 +01:00
MIT License - see [LICENSE ](LICENSE ) for details.
2026-01-19 03:40:57 +01:00
2026-01-21 03:13:56 +01:00
---
2026-01-19 03:40:57 +01:00
2026-01-21 03:13:56 +01:00
## Acknowledgments
2026-01-19 03:40:57 +01:00
2026-01-21 03:13:56 +01:00
- [Claude Code ](https://claude.ai/code ) by Anthropic
- [xterm.js ](https://xtermjs.org/ ) for terminal rendering
- [Fastify ](https://fastify.io/ ) for the web server
- [node-pty ](https://github.com/microsoft/node-pty ) for PTY
- [GNU Screen ](https://www.gnu.org/software/screen/ ) for persistence
2026-01-19 03:40:57 +01:00
2026-01-21 03:13:56 +01:00
---
2026-01-19 03:40:57 +01:00
2026-01-21 03:13:56 +01:00
<p align="center">
Made with care for autonomous AI development
</p>