Commit Graph

193 Commits

Author SHA1 Message Date
payneio
22122b86f4 docs: Update README to reflect current project state
- Add castle.yaml creation step to Quick Start (was missing from bootstrap)
- Add `castle build` to CLI reference
- Standardize terminology: components → programs throughout
- Fix YAML runner example (tool → program)
- Update architecture diagram to show ~/.castle/ runtime layout
- Correct data directory path (~/.castle/data/<name>/)
- Rewrite API reference table with all current endpoints
- Remove instance-specific component deployment tables
2026-04-27 20:52:55 -07:00
payneio
b720a96c6e feat: Add castle build command
Added castle build [project] command following the same pattern as castle test and castle lint. Stack handlers already had build methods — this just wires up the CLI to expose them.

Supports building a single project or all projects, providing feature parity with existing project-level commands.
2026-04-27 20:48:35 -07:00
payneio
529ca53242 refactor: Remove component install-by-path from sync
Simplified castle sync by removing the _try_install() function and the loop that installed components via install.path. Only python-runner service installs remain.

This removes dead complexity — the install.path feature was unused and added unnecessary code paths to maintain.
2026-04-27 20:48:29 -07:00
payneio
a553525c71 feat: Add support for remote services
- Added base_url field to DeployedComponent for external URL proxying
- Updated Caddyfile generator to proxy to base_url when present instead of requiring local port
- Added runner: remote handling in deploy command (returns empty run_cmd, marks as unmanaged)
- Reformatted long ternary expression in registry.py for readability

This enables castle to manage services that proxy to external endpoints without requiring a local process.
2026-04-27 20:48:25 -07:00
Paul Payne
a28d40c49e Fixes 2026-04-27 20:19:16 -07:00
Paul Payne
01a09d6a61 feat: Implement unit specification and expansion logic in configuration 2026-04-08 16:57:19 -07:00
Paul Payne
8be129259c refactor: Restructure ~/.castle/ as the instance directory
Move all instance state into ~/.castle/ with clear separation:
- code/        — user project source (was components/)
- artifacts/   — generated specs, built content (was generated/, static/)
- data/        — service runtime data (was /data/castle/)
- secrets/     — credentials

castle.yaml moves to ~/.castle/castle.yaml as the canonical location.
Source paths use repo: prefix for git repo programs (castle-api, app)
and relative paths for user projects (code/central-context).

Add idempotent install.sh for bootstrapping infrastructure (Docker,
Caddy, MQTT, Postgres, Neo4j) with interactive service detection.

Remove components/ from repo (now in ~/.castle/code/), deinit
submodules, remove .gitmodules.
2026-03-09 22:03:37 -07:00
Paul Payne
b7628c590b refactor: Remove unnecessary HTTP expose configuration from MQTT service 2026-03-05 10:16:25 -08:00
Paul Payne
0c70559b9d refactor: Enhance health check logic to separate HTTP and systemd checks for clarity and maintainability 2026-03-05 10:16:17 -08:00
Paul Payne
99e70f8543 install_extras 2026-03-05 10:01:26 -08:00
Paul Payne
5446fbb950 feat: Add favicon.svg and link it in index.html for improved branding 2026-03-05 10:00:45 -08:00
Paul Payne
ca2d780018 Full source paths. 2026-02-23 23:15:19 -08:00
Paul Payne
88e7d9ff17 Fix test. 2026-02-23 22:59:10 -08:00
Paul Payne
efab2a7893 refactor: Update component specifications to use 'program' and 'behavior' attributes, enhancing clarity and consistency across the application 2026-02-23 22:56:18 -08:00
Paul Payne
0d36e4f72a Refactor component terminology to programs in config and manifest
- Updated the terminology from "components" to "programs" across the codebase, including in config loading, saving, and manifest specifications.
- Introduced a new `stacks.py` file to handle lifecycle actions for development stacks, implementing handlers for Python and React Vite stacks.
- Adjusted tests to reflect the new program structure and ensure proper functionality.
- Revised documentation to align with the new terminology and structure, ensuring clarity on the purpose and configuration of programs, services, and jobs.
2026-02-23 22:09:41 -08:00
Paul Payne
f559fba143 feat: Introduce job and service categorization for components, enhancing routing and display logic across the application 2026-02-23 17:02:55 -08:00
Paul Payne
56b9c8ddf1 refactor: Update component structure to use behavior and stack attributes, enhancing clarity and functionality across services, tools, and frontends 2026-02-23 16:32:55 -08:00
Paul Payne
3343e955fd feat: Implement multi-node support with MQTT and mDNS for service discovery and coordination 2026-02-23 02:30:12 -08:00
Paul Payne
eeaa5045d0 refactor: Decouple roles. 2026-02-23 01:49:24 -08:00
Paul Payne
72d35f2641 refactor: Enhance component info and list commands with deployed state from registry 2026-02-23 00:07:42 -08:00
Paul Payne
5e3e01a5b6 refactor: Update runner specifications from 'python_uv_tool' to 'python' across components and documentation 2026-02-22 23:56:37 -08:00
Paul Payne
73e4a2ba00 fix: Improve command resolution in deploy and sync processes, adding warnings for missing tools 2026-02-22 23:36:51 -08:00
Paul Payne
d52d8829ba refactor: Separate runtime from build. Enhance configuration and registry management, migrate to registry-based component handling 2026-02-22 23:19:16 -08:00
Paul Payne
033a76ccfd refactor: Update project structure to place tools and frontends under components/ 2026-02-22 22:56:54 -08:00
Paul Payne
006cafa1e8 fix: Correct project directory paths in create command tests 2026-02-22 22:55:10 -08:00
Paul Payne
41d4c574cb refactor: Migrate CLI and API components to use castle-core for configuration and manifest handling 2026-02-22 22:54:38 -08:00
Paul Payne
6d0332e32b feat: Add various tools for document processing and management
- Introduced `docx-extractor` for extracting content and metadata from Word .docx files.
- Added `docx2md` for converting Word .docx files to Markdown format.
- Implemented `gpt` for generating text using OpenAI's GPT models.
- Created `html2text` for converting HTML content to plain text.
- Developed `mbox2eml` for converting MBOX mailbox files to individual .eml files.
- Added `md2pdf` for converting Markdown files to PDF format.
- Introduced `mdscraper` for combining text files into a single markdown document.
- Created `pdf-extractor` for extracting content and metadata from PDF files.
- Developed `pdf2md` for converting PDF files to Markdown format.
- Implemented `protonmail` for managing ProtonMail emails via Bridge.
- Added `schedule` for managing systemd timers and services.
- Introduced `search` for managing searchable collections of files.
- Added `text-extractor` for extracting content and metadata from text files.
- Removed outdated recommendations document.
2026-02-22 22:18:41 -08:00
Paul Payne
eab6f8b535 refactor: update tools handling and improve CLI documentation 2026-02-22 21:34:00 -08:00
Paul Payne
a5e9835d55 Removes tools from grouping. 2026-02-22 21:31:21 -08:00
Paul Payne
d43c49d219 Cleanup 2026-02-21 02:01:45 -08:00
Paul Payne
12b54dca4f refactor: remove event bus component and related files 2026-02-21 01:55:02 -08:00
Paul Payne
9a792ef90c fix: update notification-bridge subproject commit reference 2026-02-21 01:47:54 -08:00
Paul Payne
2630d73be5 chore: remove mboxer submodule (replaced by mbox2eml in tools/document) 2026-02-21 01:47:13 -08:00
Paul Payne
f7cc773803 feat: add mbox2eml tool for converting MBOX files to EML format 2026-02-21 01:42:09 -08:00
Paul Payne
bb9fbd8ca4 fix: update 'cwd' to 'working_dir' in run specifications for consistency 2026-02-21 01:34:56 -08:00
Paul Payne
bb367ab632 fix: update gateway name to 'castle-gateway' for correct identification 2026-02-21 01:26:58 -08:00
Paul Payne
233ee453d4 fix: correct GATEWAY_UNIT name to include 'castle-' prefix 2026-02-21 01:25:49 -08:00
Paul Payne
930bc601b7 feat: add ComponentGrid and ComponentTable components for displaying components in grid and table formats
feat: implement HealthBadge and RoleBadge components for displaying health status and roles

feat: create LogViewer component for streaming logs of services

feat: develop SecretsEditor for managing secrets with CRUD operations

feat: introduce ToolCard component for displaying tool information

style: add global CSS variables and styles for consistent theming

feat: set up API client for handling requests to the backend

feat: implement hooks for fetching components, statuses, and tools

feat: create routes for dashboard, component details, and tools

feat: add service management endpoints for starting, stopping, and restarting services

feat: implement event bus for handling real-time updates via SSE

feat: create health check and logs endpoints for monitoring services

feat: add tests for health and tools endpoints to ensure functionality

chore: update project configuration files and dependencies for better development experience
2026-02-21 01:23:37 -08:00
Paul Payne
f99c2dad86 feat: Enhance gateway management and add Caddyfile generation support 2026-02-21 01:08:11 -08:00
Paul Payne
54ba2ccc62 feat: Refactor tool management and update documentation for clarity 2026-02-21 00:30:31 -08:00
Paul Payne
08c6f3fa83 feat: Enhance tool management and documentation in Castle
- Introduced category tools support in the `castle create` command.
- Added detailed guides for creating components in CLAUDE.md.
- Implemented new API endpoints for listing and retrieving tool details.
- Updated component and tool models to include additional metadata.
- Improved error handling and response structures in service actions.
- Enhanced documentation for component registry and web APIs.
2026-02-21 00:09:34 -08:00
Paul Payne
f39a551aad feat: Add new tools and configurations for Castle platform
- Introduced `uv.lock` for dependency management with various packages including `pytest`, `colorama`, and `pluggy`.
- Added `pyrightconfig.json` for Python type checking configuration.
- Expanded `recommendations.md` with detailed scaling recommendations and project management strategies.
- Created shared `ruff.toml` for consistent linting across projects.
- Developed `Castle Tools` with various utilities including Android backup, browser automation, document conversion, and search tools.
- Implemented `backup-collect` and `schedule` tools for system administration tasks.
- Enhanced `search` functionality with indexing and querying capabilities using Tantivy.
- Added comprehensive documentation for each tool, including usage examples and installation instructions.
2026-02-20 16:41:19 -08:00
Paul Payne
0d35ac9ffd Initial commit: castle personal software platform
Add three submodules (central-context, mboxer, notification-bridge),
devbox-connect as tracked files, and top-level project docs.
2026-02-19 16:38:11 -08:00