|
1 | 1 | # Services |
2 | 2 |
|
3 | | -I'm Artur Shiriev, the maintainer of modern-python. Besides the open-source work, I help teams |
4 | | -with their Python backends: auditing a codebase, setting up observability and CI, and |
5 | | -modernizing services. |
| 3 | +I'm Artur Shiriev, the maintainer of modern-python. Besides the open-source work, I help Python |
| 4 | +backend teams that use coding agents keep production stable: I make the codebase easier for agents |
| 5 | +to work in, review where delivery stands, and lock down what agents can reach. |
6 | 6 |
|
7 | 7 | The libraries stay free and MIT-licensed whether or not you hire me. You don't have to use them |
8 | 8 | either. When one fits, it saves time; when it doesn't, I work with what your team already runs. |
9 | 9 |
|
10 | | -## Engineering health audit { #audit } |
| 10 | +## Agent-ready backend { #agent-ready } |
11 | 11 |
|
12 | | -For teams that inherited a codebase, are about to grow one, or keep fighting the same incidents. |
| 12 | +For teams where coding agents write a growing share of the code. A fixed-scope sprint that ends in |
| 13 | +merged pull requests in your repositories: |
13 | 14 |
|
14 | | -I look at: |
| 15 | +- Context the agent can use. `AGENTS.md`, skills, and architecture rules written where the agent |
| 16 | + reads them and checked in CI, with a [LikeC4](https://likec4.dev) model of the system when the |
| 17 | + boundaries need one. |
| 18 | +- Checks for agent-written code. Lint, type, test and coverage gates plus structural tests and |
| 19 | + hooks, run the same way locally and in CI, along the lines of the org's own |
| 20 | + [standard](standard.md). |
| 21 | +- Access to production signals. CLI and MCP access to your error tracker, logs, metrics and traces, |
| 22 | + so an agent can check a change against how the service actually behaves. |
| 23 | +- Telemetry worth querying. Structured logs, traces, metrics and error tracking in FastAPI, Litestar |
| 24 | + or FastStream services, usually with |
| 25 | + [`lite-bootstrap`](https://github.com/modern-python/lite-bootstrap), so people and agents can |
| 26 | + debug from the same data. |
| 27 | + |
| 28 | +## Delivery health check { #audit } |
| 29 | + |
| 30 | +A short, fixed-scope review, and a good first step before a sprint. Automated scanners for |
| 31 | +dependencies, vulnerabilities and code smells run first, and I treat what they find as raw input. |
| 32 | +Most of the time goes to what the tools can't see: |
15 | 33 |
|
16 | 34 | - recent outages and incidents, what caused them, and which ones keep coming back |
17 | | -- the defect backlog and the error tracker (Sentry, GlitchTip): which bugs matter and which can be |
18 | | - closed |
19 | | -- logs, traces and metrics: what is collected, what is noise, and what is missing |
20 | | -- tech debt: outdated Python and packages, known vulnerabilities, test coverage, tests built on |
21 | | - mocks, missing linters and type checks |
| 35 | +- whether your logs, traces and metrics are good enough to debug from, for people and for agents |
| 36 | +- whether code review keeps up with how much code the agents produce, and how deployment |
| 37 | + frequency, change failure rate and time to restore have moved since the team adopted them |
22 | 38 | - CI, the release process, and how a change reaches production |
23 | | -- the architecture diagrams, and whether they still match the code |
24 | | - |
25 | | -You get a written report with findings ranked by impact and effort, a plan for the first fixes, |
26 | | -and a call to go through it with your team. The audit doesn't change your code; fixes are a |
27 | | -separate piece of work. |
28 | | - |
29 | | -## Implementation sprints { #sprints } |
30 | | - |
31 | | -Short, fixed-scope work that ends in merged pull requests in your repositories. Typical sprints: |
32 | | - |
33 | | -- Observability. Structured logs, traces, metrics and error tracking in FastAPI, Litestar or |
34 | | - FastStream services, usually with [`lite-bootstrap`](https://github.com/modern-python/lite-bootstrap), |
35 | | - plus Grafana and Prometheus dashboards. |
36 | | -- Quality gates. A `justfile` whose lint and test tasks run the same way locally and in CI, with |
37 | | - ruff, ty, coverage and dependency checks, along the lines of the org's own [standard](standard.md). |
38 | | -- A harness for coding agents. `AGENTS.md`, skills, CLI and MCP access to your error tracker, logs |
39 | | - and metrics, and the hooks and CI checks that hold agent-written changes to the same bar as |
40 | | - everyone else's. |
41 | | -- Modernization. Upgrading Python and dependencies, and introducing |
42 | | - [`modern-di`](https://github.com/modern-python/modern-di) for dependency injection, |
43 | | - [`httpware`](https://github.com/modern-python/httpware) for typed, resilient HTTP clients, or |
44 | | - [`faststream-outbox`](https://github.com/modern-python/faststream-outbox) for reliable event |
45 | | - publishing. |
46 | | -- Release process. Change requests, end-to-end tests built from test cases, and release scope |
47 | | - collected automatically with [`release-scope`](https://github.com/modern-python/release-scope) |
48 | | - and [`semvertag`](https://github.com/modern-python/semvertag). |
49 | | -- Architecture as code. A [LikeC4](https://likec4.dev) model of the current system, kept in the |
50 | | - repo next to the code. |
| 39 | +- whether the architecture docs still match the code |
| 40 | + |
| 41 | +You get a written report with findings ranked by impact and effort, a plan for the first fixes, and |
| 42 | +a call to go through it with your team. The review doesn't change your code. When it calls for |
| 43 | +design changes, such as dependency injection with |
| 44 | +[`modern-di`](https://github.com/modern-python/modern-di), a transactional outbox with |
| 45 | +[`faststream-outbox`](https://github.com/modern-python/faststream-outbox), or resilient HTTP clients |
| 46 | +with [`httpware`](https://github.com/modern-python/httpware), I can make them as follow-up work. |
| 47 | + |
| 48 | +## Agent security and governance { #governance } |
| 49 | + |
| 50 | +For teams rolling coding agents out beyond a few early users, or unsure what the agents can touch: |
| 51 | + |
| 52 | +- a usage policy: which tools and repositories, which changes need human review, and the size and |
| 53 | + test requirements for agent pull requests |
| 54 | +- permissions: which commands agents may run, which secrets and tokens are within their reach, and |
| 55 | + whether anything reaches production |
| 56 | +- MCP servers and other integrations: which to trust and what data they see |
| 57 | +- prompt injection through issues, pull requests, docs and CI, wherever agents read text they |
| 58 | + didn't write |
| 59 | +- a rollout plan: one team first, then wider once the guardrails hold |
51 | 60 |
|
52 | 61 | ## Library support { #support } |
53 | 62 |
|
54 | | -For companies that run modern-python libraries in production: help with upgrades and migrations |
55 | | -(for example from `that-depends` or `dependency-injector` to `modern-di`), a review of how the |
56 | | -libraries are wired into your services, and help when an incident involves one of them. |
| 63 | +If you run modern-python libraries in production, I can help with migrations (for example from |
| 64 | +`that-depends` or `dependency-injector` to `modern-di`) and with incidents that involve one of |
| 65 | +them. |
57 | 66 |
|
58 | 67 | ## Get in touch { #contact } |
59 | 68 |
|
|
0 commit comments