Personal monorepo platform
Internal Development Platform
A shared foundation for building, deploying and operating private software projects from one monorepo. Identity, data, compute, delivery and developer tooling work together, so a new service starts with sign-in, storage, configuration and a release path already in place.
Internal use only. The platform and its services are not available for public use or registration. This page explains how they are built and how they fit together.
Interested in an engineering collaboration? Get in touch on readyyyk.com
- Developer workflowShared tooling
- Compute & delivery
- Data
- Identity & access
Shared identity, permissions and runtime configuration.
How it fits together
From scaffold to running service
A typical service draws on the same foundation from its first files to a running release. Projects select the pieces they need, with shared contracts and tools connecting the steps.
Scaffold
codectl creates a service from shared templates: backend, frontend, generated client, deployment declaration and CI wiring. Scaffold options control the included components and resource provisioning.
Define the contract
A concise API definition expands into OpenAPI. Generators produce backend handlers and typed TypeScript and Swift clients, so consumers stay in step with the server.
Connect identity and data
Services can use auth.rc for sign-in and groups.rc for scoped permissions, then add a PostgreSQL database through pg.rc or object storage through s3.rc as needed.
Store configuration
Environment values go into secrets.rc as a new immutable revision. Releases pin that revision, and each host receives only the values it needs.
Push and verify
Code is pushed to git.rc and mirrored in order to GitHub. Path-filtered workflows select relevant projects, the build graph prepares their dependencies, and ci.rc shows runs, logs and artifacts.
Release and run
CI publishes an immutable artifact. deploy.rc applies any declared migration barrier, checks health and promotes the release. Retained releases support compatible application rollback. iaas.rc provides virtual machines for workloads that need their own environment.
Services
What each service does
Grouped by responsibility, with pilot and retired projects marked explicitly. These services are for internal use.
Identity & access
Who someone is, what they may do, and which configuration a workload may read. The three concerns are separate services so each can change without weakening the others.
auth.rc
Identity provider
Establishes who a person or service is. Platform consoles, APIs and Git access can share an identity instead of maintaining separate accounts.
- OpenID Connect provider with single sign-on and social sign-in through Telegram, GitHub, Google and, where configured, Apple.
- Short-lived ES256-signed access tokens with refresh sessions. Services verify tokens through JWKS discovery rather than sharing a secret.
- API keys for command-line tools and Git, plus generated TypeScript and Swift clients.
groups.rc
Shared permissions (RBAC)
Decides what an authenticated identity may do. Keeping permissions out of the identity provider lets every service define its own scopes without changing how people sign in.
- Users, groups and role assignments scoped to a service and a resource.
- A shared backend client, so product services check permissions the same way.
- Permission mutations and their audit events commit in the same transaction.
secrets.rc
Versioned configuration and secrets
Stores each project's configuration as immutable revisions and delivers values to running workloads without passing them through CI.
- Every change creates a new revision; a release pins the exact revision it was deployed with.
- Scoped delivery: a host receives only the values for the workloads it runs, through one-time grants.
- A command-line client for pulling and pushing local environment files.
Data
Where projects keep relational data, files and product events.
pg.rc
PostgreSQL control plane
A custom self-service control plane on top of PostgreSQL. Projects get databases and database users through one API instead of manual administration.
- Database and user provisioning with per-database access grants.
- Separate permissions to use the service, create databases and administer it, granted directly or through groups.
- The same API behind a web console, a CLI and a generated client.
s3.rc
Object storage
S3-compatible object and bucket storage based on MinIO, with a custom web interface and single sign-on through auth.rc.
- Standard S3 API, so applications use ordinary S3 clients and tooling.
- MinIO is pinned to a release that keeps OpenID Connect sign-in for the console.
- Stored data and its configuration are managed separately from application releases.
analytics.rc
Product analytics
Pilot rolloutCollects a bounded set of product events and turns them into fixed reports. The collector and protected dashboard are live; client enrollment is progressing through a controlled pilot.
- One event catalog generates typed TypeScript, Swift and Rust event definitions.
- Ingestion keys are scoped to a project, environment, platform and component, and cannot read data.
- Browser and native clients queue events locally and retry with stable event IDs for deduplication.
- Reports sit behind auth.rc sign-in and groups.rc permissions.
Compute & delivery
A controlled path from a commit to a running release, and general-purpose machines for workloads that need their own.
git.rc
Canonical Git hosting
Hosts the monorepo's single canonical repository. Developers push here; GitHub receives an ordered replica for Actions and integrations and is never an alternate place to write.
- Authenticated browsing and Git access, limited to members of the developer group.
- Durable, ordered mirroring: every accepted push is queued and replayed with a lease, so a diverged replica stops the queue instead of being overwritten.
- A documented recovery procedure that preserves both histories if the replica ever diverges.
ci.rc
CI dashboard
A provider-neutral view of workflows, runs, jobs, logs and artifacts. It is separate from how pipelines are defined, which is covered under shared tooling.
- GitHub Actions is the implemented provider; other providers are not yet supported.
- Live run updates from webhooks, workflow graphs and failure annotations.
- Provider credentials are stored per connection rather than as global settings.
deploy.rc
Release orchestration
Each project declares its deployment targets. The control plane keeps release history, schedules work and coordinates host runners that perform the deployment.
- Promotes immutable releases of Docker services, static sites, CLI channels and systemd artifacts.
- Health-checked promotion and rollback to a retained release. Migration barriers gate traffic changes; application rollback does not reverse database changes.
- Runtime secrets come from pinned secrets.rc revisions, not from CI.
- Fenced claims, idempotent requests and consistent lock ordering coordinate recovery. Uncertain migration outcomes require operator reconciliation.
iaas.rc
Virtual machines
General-purpose KVM virtual machines on bare-metal hosts. The control plane owns access, machine metadata and action history; a Go host agent translates requests into libvirt and cloud-init operations.
- Machine images, cloud-init, SSH keys and private networks.
- Lifecycle controls and per-machine metrics.
- Persisted guest network mappings are validated and restored idempotently when the host agent restarts.
Developer workflow
How work on the monorepo is tracked, and an earlier experiment in running coding agents remotely.
todos.rc
Tasks and workflow
The task tracker that the monorepo's own work runs on, used from a browser and from the command line.
- Spaces, tasks, comments, saved views and boards.
- Progress pipelines: a task is complete when it reaches the last stage, not when a box is ticked.
- A command-line client for scripts and coding agents.
claude.rc
Remote coding-agent environments
RetiredRan persistent Claude Code and Codex sessions on a dedicated host, reachable through an access-restricted web interface and a Telegram client. Retired after the providers announced native remote environments.
- A provider-neutral bridge let the same interfaces drive either agent.
- Clients never connected to the agent host directly; traffic went through the platform's own backend.
Tooling
Shared engineering tooling
Services are built from the same packages and checked by the same build graph. That is what keeps them consistent without copying code between projects.
rcli
Repository tool runner
Discovers the repository's shared tools, prepares their dependencies and checks that sources and builds are current before running them.
codectl
Service scaffolding
Creates backends, frontends, SDKs, deployment declarations and CI wiring from shared templates, and connects them to the workspace. Provisioning hooks can create database and secrets resources, or be skipped when only a scaffold is needed.
OpenAPI tooling
Contracts and generated SDKs
simple-to-openapi expands concise source definitions into full OpenAPI. Separate generators produce backend handlers and TypeScript clients, and Swift tooling produces native clients.
frontend-modules
Shared interface
Common components, the AppShell with service navigation, themes, session helpers and styling for the platform's consoles.
backend-modules
Shared backend foundations
Authentication helpers, PostgreSQL sessions through Drizzle, retries, and structured logs that redact sensitive values.
Build graph and CI definitions
One workspace, typed pipelines
One pnpm workspace builds selected packages and their prerequisites in dependency order. Provider-neutral TypeScript definitions compose pipelines and generate workflows; GitHub Actions is the implemented target, with self-hosted fallback for trusted jobs. Project scripts own the verification checks.
Collaborate
Building something similar?
The platform is built for internal use and is not offered as a hosted service. If you work on internal platforms, developer tooling or infrastructure and would like to talk about an engineering collaboration, get in touch through readyyyk.com.